try-catch-finally
@Test
public void testTryCatch(){
try {
System.out.println("Try Before");
//发生异常
int a =10/0;
System.out.println("Try After");
}catch (Exception e){
//捕获异常
System.out.println("Catch");
}finally {
//无论如何都会执行
System.out.println("Finally");
}
//由于异常被捕获,依旧会执行
System.out.println("End");
}
最后的结果
Try Before
Catch
Finally
End
try中间加入return
@Test
public void testTryCatch(){
try {
System.out.println("Try Before");
System.out.println("Try After");
//此处返回,但是finally仍会执行
return;
}catch (Exception e){
//捕获异常
System.out.println("Catch");
}finally {
//无论如何都会执行
System.out.println("Finally");
}
//由于异常被捕获,依旧会执行
System.out.println("End");
}
finally仍会执行 说明finally是在return之前加载/try catch 外的语句不会执行
Try Before
Try After
Finally
try中return,其中发生异常
@Test
public void testTryCatch(){
try {
System.out.println("Try Before");
int a=10/0;
System.out.println("Try After");
//发生异常,return不会执行,因而会直接顺序执行
return;
}catch (Exception e){
//捕获异常
System.out.println("Catch");
}finally {
//无论如何都会执行
System.out.println("Finally");
}
//由于异常被捕获,依旧会执行
System.out.println("End");
}
Try Before
Catch
Finally
End
总结如下
- 无论是否发生异常,finally都会执行;而try catch之后的语句也会顺序执行;
- 如果希望中止在try catch,应在finally中添加return语句;此外释放资源的一些操作,如socket关闭等均放在finally中处理