您的位置:首页 > 职场人生

黑马程序员——学习笔记07.Java异常机制

2014-01-04 12:32 260 查看
----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------

1.异常:是运行时期发生的不正常现象。java中可以通过类对这一类不正常的现象进行描述,并封装为对象。

2.异常错误的超类Throwable

Throwable

|-------Error :一般不可处理的。是又JVM抛出的严重性问题,这种问

题发生一般不针对性处理,直接修改程序。

|-------Exception :可处理的

|------RuntimeException

无论是Error还是Exception,问题都是可抛的,反馈给调用者。通常是通过两个关键字来体现的throws和throw。凡是可以别这连个关键字所操作的类和对象都具备可抛性。

3.异常的分类

(1)编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系。这样问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式,这样的问题都可以针对性的处理.

(2)编译时不检测异常(运行时异常):就是Exception中的RuntimeException和其子类。这种问题的发生,无法让功能继续,运算无法进行,更多是因为调用者的原因导致。那么这种问题一般都不处理,直接编译通过,在运行时,让调用者调用的程序强制停止,让调用者对代码处理。

有自定义异常时,要么继承Exception,要么继承RuntimeException。

4.throw 和throws 的区别:

(1)throws 使用是函数上,throw 使用在函数内。

(2)throws 抛出的是异常类,可以抛多个,用逗号隔开。throw 抛出的是异常对象.

5.异常的处理原则:

(1)函数内容如果抛出需要检查的异常,那么函数上必须要声明。否则必须在函数内用try...catch捕捉,否则编译失败。

(2)如果调用到了声明异常的函数,要么try...catch要么throws,否则编译失败。

(3)什么时候用catch语句?什么时候用throws呢?

能解决的用catch,不能解决的用throws告诉调用者,有调用者解决。

(4)一个功能如果抛出了多个异常,那么调用时,必须有对应多个catch进行针对性的处理。内部有几个需要检测的异常,就抛几个异常。

自定义异常代码演示:

class DemoException{
public int method(int[] arr ,int index) throws MyException {
if(arr == null)
throw new NullPointerException("空指针异常");
if(index<0)
//抛出了检查时异常时,必须声明或者捕获,否则编译失败。
throw new MyException("数组角标不能为负数");
if(index>=arr.length)
throw new ArrayIndexOutOfBoundsException("数组角标越界了");
return arr[index];
}

class MyException extends Exception{
MyException(String mes){
super(mes);
}
}

6.try块中是被检测异常的语句代码,catch参数是发生的异常对象,catch块中是处理异常的执行代码,finally块中的语句一定会处理的。

try catch组合:当不需要释放资源时,可以不定义finally

try catch finally组合:需要处理并且一定要释放资源

try finally组合:异常无法直接处理,try块中可能已经抛出了,但是资源一定需要关闭。

7.异常的注意事项:

(1)子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类。

(2)如果父类抛出多个异常,那么子类只能抛出父类异常的子集。

简单说:子类覆盖父类只能抛出父类的异常或者子类或者子集

注意:如果父类的方法没有抛出异常,那么子类覆盖时据对不能抛。

(3)try块中捕获的语句如果出现异常,那么这句代码后面的代码都执行不了

(4)当有多个catch块时,后面的异常不能小于前面的异常。

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------

详细请查看:http://edu.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: