Java异常处理细节

来源:互联网 发布:傲剑金蛇升级数据大全 编辑:程序博客网 时间:2024/05/22 05:23

发现错误的理想时机是在编译阶段,但编译阶段并不能找出所有错误,余下的问题必须在运行期间解决,异常处理机制的左右就在于此,提高了代码的健壮性。

基本异常:是阻止当前方法或者作用域继续执行的问题。当前环境无法处理错误,你所做的就是从中跳出,把问题提交上一环境。

异常参数:所有标准异常类都有两个构造器:一个是默认构造器,另一个是接受字符串作为参数的构造器。例如:throw new NullPointerException(“t = null”);此处其实新建一个异常类。

捕获异常:try块提供一个监控区域

异常处理程序:catch块给出异常处理程序

异常处理模型: 终止模型,假设错误非常关键,程序无法返回继续执行。

恢复模型,异常处理程序的工作是修正错误,然后重现尝试调用出问题的方法

e.printStackTrace()打印方法调用出到异常抛出出,直接输出到标准错误流,e.printStackTrace(System.out)输出到标准输出流。

 

Java标准异常:Throwable表示任何可以被当做异常抛出的类,其对象可以分为两种类型:Error用来表示编译时和系统错误,Exception是可以被抛出的基本类型

         运行时异常都是继承与RuntimeException,是不用检查的异常,这些异常属于错误,将被自动捕获。

         RuntimeException代表编程错误:

1.      无法预料的错误

2.      应该在代码中作为程序员检查的错误

 

对于一些代码,可能会希望无论try中事后有异常抛出,他们都能得到执行。Finally子句可以实现这一意图。对于没有垃圾回收和析构函数的自动调用机制语言来说,finally非常重要,它使得程序员保证无论块中发生什么,内存都能够得到释放finally中的语句总会被执行,所以无论是return在finally之前或者之后,finally中的语句都会被执行

         异常丢失finally{return;}在finally中返回会丢失异常数据,同时在finally中抛出异常也会丢失数据

         子类只能抛出在基类中声明的异常

         异常匹配,抛出异常时系统会按照代码书写顺序查出最近的处理顺序,找到以后认为异常已经得到处理不再继续查找。查找的时候并不要求抛出的异常同处理程序的声明完全匹配,派生类对象也可以匹配其基类处理程序。

0 0
原创粉丝点击