Java 异常: try...catch...finally
来源:互联网 发布:unity3d视频教程下载 编辑:程序博客网 时间:2024/05/16 09:41
在看下面的内容之前,想问大家一个问题:
finally 语句是不是一定会被执行
使用 Integer.valueOf 方法模拟异常,来说明关于 try catch finally 之间的问题。
示例 1:没有异常,正常情况
public class TryCatchFinally {public static void main(String[] args) {try {System.out.println("try statement :-)");Integer.valueOf("2");} catch (NumberFormatException nfe) {System.out.println("catch statement :-)");} finally {System.out.println("finally statement :-)");}}}
示例 2:没有异常,正常情况,但是 try 语句里面添加 return
public class TryCatchFinally {public static void main(String[] args) {try {System.out.println("try statement :-)");Integer.valueOf("2");return;} catch (NumberFormatException nfe) {System.out.println("catch statement :-)");} finally {System.out.println("finally statement :-)");}}}
示例 1 和 示例 2 的运行结果一致:
示例 3:制造异常
public class TryCatchFinally {public static void main(String[] args) {try {System.out.println("try statement :-)");Integer.valueOf("bluetooth");} catch (NumberFormatException nfe) {System.out.println("catch statement :-)");} finally {System.out.println("finally statement :-)");}}}
示例 4:制造异常,catch 语句里面添加 return
public class TryCatchFinally {public static void main(String[] args) {try {System.out.println("try statement :-)");Integer.valueOf("bluetooth");} catch (NumberFormatException nfe) {System.out.println("catch statement :-)");return;} finally {System.out.println("finally statement :-)");}}}
示例 3 和 示例 4 的运行结果一致:
由此,可以看出以上四种情况,finally 语句都被执行了。
示例 5:制造异常,catch 语句里面添加 return
目的:验证finally代码块后面的代码是否会被执行 ??????
public class TryCatchFinally {public static void main(String[] args) {try {System.out.println("try statement :-)");Integer.valueOf("bluetooth");} catch (NumberFormatException nfe) {System.out.println("catch statement :-)");return;} finally {System.out.println("finally statement :-)");}System.out.println("out of try...catch...finally statement");}}
执行结果:
如果将 catch 语句里面添加 return 注释掉,执行结果:
示例 6:制造异常,try 语句里面添加 return
public class TryCatchFinally {public static void main(String[] args) {try {System.out.println("try statement :-)");Integer.valueOf("dd");return;} catch (NumberFormatException nfe) {System.out.println("catch statement :-)");} finally {System.out.println("finally statement :-)");}System.out.println("out of try...catch...finally statement");}}
执行结果:
示例 7:无异常,try 语句里面添加 return
public class TryCatchFinally {public static void main(String[] args) {try {System.out.println("try statement :-)");Integer.valueOf("2");return;} catch (NumberFormatException nfe) {System.out.println("catch statement :-)");} finally {System.out.println("finally statement :-)");}System.out.println("out of try...catch...finally statement");}}
执行结果(无异常,return 返回,所以finally代码块后面的语句就不会执行:-)
以上种种迹象表明:
finally 语句都被执行了,但是还有另外一种情况没有被验证,接着往下看
就是在 try...catch... 里面退出 JVM :
public class TryCatchFinally {public static void main(String[] args) {try {System.out.println("try statement :-)");Integer.valueOf("2eer");System.exit(0);} catch (NumberFormatException nfe) {System.out.println("catch statement :-)");System.exit(0);} finally {System.out.println("finally statement :-)");}System.out.println("out of try...catch...finally statement");}}
try 或者 catch 语句里面(任意一个)调用 System.exit ,那么 finally 语句就不会被执行。
see also:http://stackoverflow.com/questions/18097496/java-exception-not-caught
- Java 异常: try...catch...finally
- java中的异常处理 try-catch 以及try-catch-finally
- 异常try-catch-finally
- Java异常--基本概念try...catch...finally
- java 异常捕捉 ( try catch finally )
- try catch finally java 异常捕捉
- java里面try,catch,finally异常捕捉
- java 异常捕捉 ( try catch finally )
- java 异常捕捉 ( try catch finally )
- java异常处理(Try Catch Finally)
- Java异常处理机制 try-catch-finally
- java异常处理 try catch finally
- java中的try-catch-finally异常捕获
- Java基础教程39-异常-try-catch-finally
- 【Java基础】[异常处理]try,catch,finally
- java 异常捕捉 ( try catch finally )
- JAVA异常处理方式 try-catch-finally
- java---try ---catch--finally
- hdu 4360 As long as Binbin loves Sangsang
- Webkit中HTML5 Video的实现分析 (二) - MediaPlayerFactory & RenderVideo的绘制操作
- VC进行宏展开的命令
- 【Error】Caused by: java.lang.NullPointerException
- SQl 语句(常见) 新建,删除,修改表结构
- Java 异常: try...catch...finally
- 用python写的处理PDB的文件
- 改变网络世界的WebRTC要来了?!
- 当Linux用尽内存
- smartupload实现上传下载
- 分组查询取最大时间记录的多种方式
- 如何配置Microsoft LoopBack Adapter 配置为系统的主网络适配器
- 在战争中,计划是没用的,做计划是必须的“ - Dwight David Eisenhower
- 分享我使用中的Linux软件