Java基础——抛出异常时finally的作用
来源:互联网 发布:python java android 编辑:程序博客网 时间:2024/06/05 00:09
1.这是一道笔试题,分析以下程序的输出结果
package src;class Test { public static void main(String[] args) { System.out.println(test(null) + "," + test("0") + "," + test("")); } public static int test(String str) { try { return str.charAt(0) - '0'; } catch (NullPointerException e1) { System.out.println("this is in 1"); return 1; } catch (StringIndexOutOfBoundsException e2) { System.out.println("this is in 2"); return 2; } catch (Exception e3) { System.out.println("this is in 3"); return 3; } finally { return 4; } }}
结果是:
this is in 1
this is in 2
4,4,4
这个问题很有疑惑性
- return定义及用法:他返回一个返回值,并且终止函数进程
- finally定义及用法:用在抛出异常程序中,只要是捕获到了异常,finally代码块无条件必须执行。
由此,分析此题
- 当程序执行时,代码test(null)会抛出(NullPointerException e1),因此会输出
this is in 1
- 当程序执行完这个异常检测程序的时候,无条件执行finally代码块。因此会将第一个4返回。
- 当程序执行到,
test("0")
,程序不抛出异常,但是因为try语句块已经执行,因此finally无条件,必须执行。
注意:只有与 finally 相对应的 try 语句块得到执行的情况下,finally 语句块才会执行。
比如:
package src;class Test { public static void main(String[] args) { System.out.println(test("0") + "," + test("0") + "," + test("")); } public static int test(String str) { if(str.equals("0")){ try { return str.charAt(0) - '0'; } catch (NullPointerException e1) { System.out.println("this is in 1"); return 1; } catch (StringIndexOutOfBoundsException e2) { System.out.println("this is in 2"); return 2; } catch (Exception e3) { System.out.println("this is in 3"); return 3; } finally { return 4; } } else return 5; }}
结果就是:
4,4,5
因为当最后test("")
时,不满足IF条件,因此try语句没有执行,finally也就没有执行。
阅读全文
0 0
- Java基础——抛出异常时finally的作用
- java在处理异常时finally语句的作用
- Java_基础—finally关键字的特点及作用
- Java异常抛出时的规定
- JAVA基础再回首(十九)——异常的概述、Try…Catch、多异常处理、Throws、throw、finally、自定义异常及异常的注意事项
- finally里面不要抛出异常
- finally 中抛出异常处理
- 重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)
- java错误异常处理时一定要处理抛出的异常
- Java基础学习总结(86)——Java异常处理机制Exception抛出异常时throw和throws用法详解
- try ,finally都抛出异常如何处理.如果try中抛出了异常,在控制权转移到调用栈上一层代码之前, finally 语句块也会执行,如果finally抛出异常,try语句快抛出的那个异常就
- java语言基础(78)——异常处理中finally关键字深入理解
- Java基础 异常-finally 包package
- java基础之异常6--finally讲解
- 【Java基础】[异常处理]try,catch,finally
- Java基础——final,finally,finalize的区别
- Java try-catch-finally进行异常处理以及throw主动抛出异常
- java异常——异常分类+声明已检查异常+如何抛出异常+自定义异常类
- 水晶报表的属性
- 回首Java——泛型的那些事
- 求 1/1
- Spring、Spring MVC、MyBatis整合文件配置详解
- Missing artifact net.sf.json-lib:json-lib:jar:2.4:compile
- Java基础——抛出异常时finally的作用
- 第十一周项目四—— 利用遍历思想求解图问题
- linux常用命令
- 结构体的复习
- 三级联动省市区城市地区选择器v2.1.0新版本发布
- linux c检测网线热插拔(netlink)
- Linux服务器上新增开放端口号
- 使用百词斩如何减少复习量
- 洛谷 P1019 单词接龙