Java异常笔记
This is a exception node for update
2017年3月28日19:56:28
记着一点,如何用try catch finally包围, 当执行到finally时,不是多线程的执行finally的,Forexample
public int testFinallyMethod() {
int i = 5;
try {
return i; // 执行到此时,会调用 Thread.wait()方法
} catch (Exception e) {
e.getMessage(); // 然后去执行此
} finally {
i++;// 然后去执行此
/*
*
* 也就是说 执行到 return i时,会先静态的设置为 return 5
* 然后去执行finally的执行体,即使此时i++了,执行完finally后会调用线程的yield(),但是返回的值仍然是 5,
* 但是在内存中 i的值是6的
*/
// return ++i;
// 如果 上面这行代码没有被注释,将会这个方法的返回值将会是7
// 原理 遇到 return 会返回,而上个return 在等待
}
return i;
}
总结来说:
1、Try catch finally 虽然不是多线程的
2、执行到 return 语句会返回
3、System.exit(0) 会结束finally
4、return throw break continue
Return 和 throw 会把程序的控制权转移交给它们的调用者
Break 和 continue 的控制权是在当前方法内转移