有关异常需要理解和注意的地方!!!

来源:互联网 发布:珠江新闻眼回看软件 编辑:程序博客网 时间:2024/05/22 00:33

检测异常就是编译是异常

不可检测异常就是运行时异常

检测性异常程序员必须在编写代码的时候就进行处理(抛出或者捕获)否则就不能编译通过。

而运行时异常比如IndexOfBoundseException,我们并不是必须对这个异常进行捕获操作,因为很多时候我们的程序是能够保证不发生这个异常的.如果这一类的异常也定义为编译时异常,必须手动处理,那么程序的代码量会剧增

常见的运行时异常有:

  NullPointerExceptionIndexOutOfBoundsExceptionClassCastExceptionNoSuchElementExceptionIllegalArgumentExceptionArithmeticException,ArrayStoreException

 

关于异常需要了解和注意的:catch捕获的异常父类放在最下面否则会出错②之类继承的方法不能抛出父类没有抛的异常,并且只能抛父类方法抛出的异常或者之类异常。对于finally代码块是一定会执行的只有两种情况不执行①JVM退出②try catch语句所在的子线程中断或者被kill了。

try-with-resources语句(JDK7新出功能)可以自动关闭相关的资源只要该资源实现了AutoCloseable接口,jdk7为对大部分资源对象都实现了这个接口。

Try( BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));){

bw.writer(hello world);

bw.flush();

}catch(IOException ex){

 

}finally{

System.out.println(finally 代码块执行吗?);

}

执行上述代码控制台只会打印hello world不会打印“finally代码块执行了吗”,因为try代码块执行完BufferedWriter会被关闭然后关联的System.out流也关闭了。

0 0