版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
《疯狂的JAVA讲义》笔记-第10章异常
try...catch...finally
块- try 块后面必须出现 catch 块或者 finally 块或者同时出现
- 在 try 块中遇到
return
并不会马上返回,而是去执行finally
块中的内容;因此如果finally
块中有return
语句,则会在finally
中返回;如果没有,则返回try
块执行return
语句。因此在finally
中使用return
语句,会导致一些奇怪的bug try
块中定义的变量 不可以在catch
或者finally
中使用,局部变量的生命周期为{}
之间JAVA 7
提供了catch
多个异常的方法,如catch (NullPointerException | IndexOutOfBoundException ie){}
,在这种情况下,异常变量是隐式使用了final
,是不可变的JAVA 7
提供了自动关闭资源的try
语句,但需要资源类实现Closeable
接口,用法try( PrintStream ps = new PrintStream(new FileOutputStream("a.txt")); BufferReader br = new BufferReader(new fileReader("hhh.java")); ){ // 在这里使用资源 System.out.println(br.readLine()); }
checked
与unchecked
异常checked
异常在编译前就需要被处理,即需要用try...catch
块包围或者throw
出去让调用者处理;unchecked
异常可以不处理。- 不推荐使用
checked
异常,因为会使得调用者与接口存在 异常耦合