thinking in java笔记 12 异常

本文深入探讨Java中的异常处理机制,包括异常记录、异常链、Java标准异常类型、运行时异常的特点及finally块的作用。此外还介绍了如何避免异常丢失以及异常限制等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

public class loggingexceptions2 {

private static logger logger = logger.getlogger("loggingexceptions2");

static void logexception(exception e) {

stringwriter trace = new stringwriter();

e.printstacktrace(new printwriter(trace));

logger.severe(trace.tostring());

}

public static void main(string[] args) {

try {

throw new nullpointerexception();

} catch (nullpointerexception e) {

logexception(e);

}

}

}

***重新抛出异常

如果只是把当前异常对象重新抛出,那么printstacktrace()显示的将是原来异常抛出点的调用栈信息,而非重新抛出点的信息。想要更新此信息,可以采用 throw (exception)e.fillinstacktrace();

***异常链

在捕获一个异常后抛出另一个异常,并把原始异常的信息保存下来,称为异常链。throwable的子类中,三种基本的异常类提供了带cause参数的构造器(error exception runtimeexception),其他类型的异常,应该使用initcause()方法。

***java标准异常

throwable对象分为两种类型:error表示编译时和系统错误。exception是可以被抛出的基本类型。

***runtimeexception

运行时异常(包含runtimeexception及其子类)(不受检查异常)会自动被java虚拟机抛出,所以不必在异常说明中列出。这种异常属于错误,将被自动捕获。如果runtimeexception没有被捕获而直达main(),那么在程序退出前将调用异常的printstacktrace()方法。

runtimeexception代表的是编程错误:

1 无法预料的错误,比如在控制范围之外传递进来的null引用。

2 应该在代码中进行检查的错误。

***finally

用处:把除内存之外的资源恢复到初始状态,如打开的文件或网络连接,在屏幕上画的图形,外部世界的开关等。

异常丢失:

异常不应该被忽略。但它可以轻易地忽略。在try中抛出的异常未被catch之前,在finally中再抛出异常则会覆盖前一个异常,造成前一个异常的丢失。 从finally中return也会造成异常丢失(在finally中使用return方法会silence所有抛出的exception)。

***异常限制

在继承结构中,子类的构造函数必须包含父类构造函数的异常声明。派生类的构造器不能捕获基类构造器抛出的异常。

子类覆盖的方法的异常声明必须是父类的异常声明的子集(或父类异常声明的派生类异常)。对象的可替换性得到了保证。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值