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之后的语句也执行完毕。
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()); } }
相关文章推荐
- java 倒序排序
- alijdk 8.1.1的优化使ssl性能提升2倍以上
- java笔记(2)
- Java中使用JUnit测试
- spring-data-jpa 中文文档(2)
- 最最基础的java中的小概念,也相当于给自己做个笔记,仅供Java零基础的同学参考,水平有限欢迎批评指正。
- java中MD5和SHA加密
- JSP :java.lang.ClassCastException:
- JDK源码学习(3)-java.util.ArrayList与LinkedList
- 个人学习-java-集合的概述
- 20140429java.lang.NoSuchMethodError com.sun.mail.util.TraceInputStream
- Stanford Parser学习入门(1)-Eclipse中配置
- JAVA获取内部及外部配置
- Java中Double类型的四舍五入
- myeclipse注释模板修改
- Eclipse安装Maven插件
- eclipse出现真机不能安装程序
- hduoj4762(Java处理大数)
- Java学习之旅基础知识篇:数组及引用类型内存分配
- JAVA 常用设计模式