您的位置:首页 > 其它

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

2016-11-29 19:05 525 查看
使用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中的代码块都会被执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: