异常处理
一些基本语法
1.catch块和finally块可以省略其中一个。
2.finally块会在try和catch的return之前执行。(return时会暂存,执行finally后再return)
如果finally中有return,那就直接return了。
/**
* 省略finally 语句块
*/
public static void omitFinally() {
try {
int i = 0;
i += 1;
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 省略 catch 语句块
*/
public static void omitCatch() {
int i = 0;
try {
i += 1;
} finally {
i = 10;
}
System.out.println(i);
}
}
3.注释写在哪里?
try {
statements;
}
// 注释行
catch ( exception-declaration) {
statements;
}
// 注释行
finally {
statements;
}
为什么要有finally?
1.防止try中出现了异常,没有被catch到的情况,异常抛出,这时资源会被遗漏释放。
2.防止try中出现了异常,被catch到了,但是catch中又发生了异常,异常抛出,这时资源会被遗漏释放。
3.防止try中return,或者catch中return,资源会被遗漏释放的情况。这时如果使用finally,finally会在return之前执行。(如果finally中也有return,这时finally中return之后就没法执行了)