黑马程序员——学习笔记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进行针对性的处理。内部有几个需要检测的异常,就抛几个异常。
自定义异常代码演示:
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
----------------------
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
相关文章推荐
- 黑马程序员:JAVA异常处理机制
- 黑马程序员_Java当中异常处理机制2
- 黑马程序员_Java_异常机制及常见异常总结
- 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)
- 黑马程序员——Java基础 异常机制 (复习)
- 黑马程序员________Java中异常机制的学习思考
- 黑马程序员-Java异常处理机制
- 黑马程序员——java异常处理机制
- 黑马程序员-----------JAVA基础-------异常机制
- 黑马程序员---Java基础(异常机制)
- 黑马程序员_java异常机制
- 黑马程序员_关于java异常机制的学习
- 黑马程序员_java异常机制
- 黑马程序员---java异常处理机制
- 黑马程序员_Java异常机制
- 黑马程序员_java中的异常机制
- 黑马程序员——java基础(异常机制、包)
- 黑马程序员----Java的异常处理机制
- 黑马程序员_关于java的处理异常机制