您的位置:首页 > 编程语言 > Java开发

Java中Try/catch/finally

2016-04-29 11:28 585 查看
Exception(extends thorowable):

Error: 不可用代码避免的错误(stackoverflow, memoverflow)

Exception:可以用代码避免的

runtimeexcption:在代码运行期间才能发现的错误(nullpoint, /0, indexout)

编译期间: io,filenotfound, sql……

----------------------------------------------------------------------------------------------------------------------------------------------

1. 一个try必须对应有catch或者finally,不能只有try,没有catch和finally

2. 如果try中有异常发生,则try后面的语句就没有机会执行,会到catch执行

3. finally是在try中return执行后,方法返回前执行,finally里面的修改不会影响返回结果

4. 如果finally中有return,则会修改try中的return值,同时还会把throw的异常吃掉,误认为方法没有异常,在调用方法的地方不会再catch到这个异常。

5. 不建议在finally中调用return,finally初衷是为了解决资源释放的问题。

6. 当try或者catch中有return语句时,finally会继续执行,但是

在以下4种特殊情况下,finally块不会被执行:

1)在finally语句块中发生了异常。

2)在前面的代码中用了System.exit()退出程序。

3)程序所在的线程死亡。

4)关闭CPU。(计算机断电、失火、或遭遇病毒攻击)。

ps: 当try语句块里的某条语句出现异常时,而没有处理此异常的catch语句块时,此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally语句块后的语句不会被执行,如果有catch语句时,会执行catch和finally语句,并把finally之后的语句也执行完毕。

package ray.test01;

public class Main {
//TestTry
public String testTry(){
String result = "";
int i = 0;
try {
result = "try";
//			int ii = 10 / i;
System.out.println("exception occur");
return result;
} catch (Exception e) {
System.out.println("catch");
} finally{
result = "finally";
System.out.println("finally");
}
System.out.println("after finally");
return result;
}
public static void main(String[] args) {
Main obj = new Main();
System.out.println(obj.testTry());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: