使用try...catch的处理异常机制

使用try...catch的处理异常机制
Java的异常处理可以让程序具有更好的容错性,程序更加健壮。当程序运行出现意外情形时,系统会自动生成一个Exception对象来通知程序。
实现原理:如果try语句块中的业务逻辑代码在运行时出现了异常,系统自动生成一个异常对象,该异常对象被提交给Java运行时环境,这个过程被称为抛出异常。当Java运行时环境收到异常对象时,会寻找处理该异常对象的catch块,如果找到合适的catch块并把该异常对象交给catch块处理,这个过程被称为捕获异常;如果Java运行时环境找不到捕获异常的catch块,则运行时环境终止,Java程序也将退出。
try语句块后可以有多个catch块,这是为了针对不同异常类提供不同的异常处理方式。当系统发送不同异常情况时,系统会生成不同的异常对象,Java运行时环境就会根据该异常对象所属的异常类来决定使用那个一个catch语句块进行处理该异常。当Java运行时环境接受到异常对象后,会依次判断该异常对象是否是catch块后异常类或其子类的实例,如果是,Java运行时环境将调用该catch块来处理该异常;否则再次拿该异常对象和下一个catch块里的异常类进行比较。
Java提供了丰富的异常类,下面显示了Java常见的异常类直接的继承关系图:

Java把所有非正常情况分为两种:异常(Exception)和错误(Error),他们都继承Throwable父类。
Error错误:一般是指虚拟机相关的问题,如系统崩溃,虚拟机出错、动态链接失败等,这种错误无法恢复或不可能捕获,将导致引用程序中断。通常应用程序无法处理这些错误。
注意:对程序进行异常捕获时,一定是先捕获小的异常,再捕获大的异常。

访问异常信息
如果程序需要在catch代码块中访问异常对象的相关信息,可以通过调用catch语句块中的异常形参的方法来获取异常信息,当Java运行时决定调用某个catch语句块来处理该异常对象时,会将该异常对象赋给catch块后的异常参数,程序就可以通过该参数来获得异常的相关信息。
异常对象常用的几个方法:
(1)getMessage():返回该异常的详细描述字符串。
(2)printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。
(3)printStackTrace(PrintStream s):将该异常信息的跟踪栈信息输出到指定输出流。
(4)getStackTrace():返回该异常的跟踪栈信息。

使用finally回收资源
Java异常处理的完整语法结构是
try {
//业务代码(可能报异常的代码)
} catch (NullPointerException e) {
// 异常处理块1
}catch(Exception e2){
//异常处理块2
}finally{
//资源回收块
}
finally语句块主要作用是回收资源,比如:关闭数据库连接,网络连接,磁盘文件,输入输出流等等。这些资源必须显示的回收,Java的垃圾回收机制不会回收任何物理资源,它只回收堆内存中对象所占用的内存。
无论try语句块中的代码是否出现异常,也不管catch块中的代码是否执行,finally中的代码块都会被执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值