




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java中异常处理中return的用法关于try、catch、finally语句块中含有return语句的几点说明:1、第一种情况:try块有return语句,catch块没有return,函数末尾也没有return:看代码:import java.util.*;public class Demopublic static void main(String args)int num = 10;test(num);public static int test(int b)tryb += 10;return b; catch(Exception e)finally编译结果:H:java Demojavac Demo.javaDemo.java:18: 缺少返回语句 1 错误有人可能会说,我在try块中不是有return语句吗?为什么会提示缺少return语句呢?这是因为编译器认为try块中是又可能产生异常操作的,也就是说在return语句之前如果出现异常的话,那么return语句根本没有机会得到执行,所以编译器会认为缺少return语句。解决办法:a、在catch块中加入return语句,因为一旦出现异常,catch中的语句可以保证函数会有一个返回值b、在finally块中加入return语句,同样只要系统不退出,finally语句块会始终得到执行的代码:import java.util.*;public class Demopublic static void main(String args)int num = 10;System.out.println(test(num);public static int test(int b)tryb += 10;return b; catch(Exception e)finallyreturn 0;c、在函数末尾加入return语句代码:import java.util.*;public class Demopublic static void main(String args)int num = 10;System.out.println(test(num);public static int test(int b)tryb += 10;return b; catch(Exception e)finallyreturn 0;2、第二种情况,看代码:import java.util.*;public class Demopublic static void main(String args)int num = 10;System.out.println(test(num);public static int test(int b)tryb += 10;return 0;结果:H:java Demojavac Demo.javaDemo.java:8: try 不带有 catch 或 finally try 1 错误说明:也就是说,如果有try语句的话,可以有catch语句,没有finally语句,但是如果没有catch语句的话,那么一定要有finally语句。并且如果出现catch语句的话,catch语句可以出现多次,而finally语句只能出现一次。代码:public class Demopublic static void main(String args)int num = 10;System.out.println(test(num);public static int test(int b)tryb += 10;catch(RuntimeException e)catch(Exception e2)finallyreturn 0;3、第三种情况:a、try块中有return语句,那么是先执行return语句,还是先执行finally语句。大家通常会有一个错误的认识,可能有的老师都会讲错,认为是先执行finally语句,再执行return语句,但是这是错误的,事实上是先执行return语句,再执行finally语句,然后将结果返回,也可以说return语句执行了两次,一次在finally之前,一次在finally之后,但是返回的确是第一次执行的值,如果有不信的,请继续看代码,此段代码可以证明我的观点:代码:public class Demopublic static void main(String args)int num = 10;System.out.println(test(num);public static int test(int b)tryb += 10;return b;catch(RuntimeException e)catch(Exception e2)finallyb += 10;return 0;结果:H:java Demojavac Demo.javaH:java Demojava Demo20说明:此处需要引入缓冲的概念,有对缓冲不太了解的也没关系,程序运行结果是20足以证明我的观点,程序执行流程是进入try语句块执行return语句,但是程序有finally语句块,所有先将return返回的值缓冲起来,然后程序跳转到finally语句块执行,我在finally语句块中修改了变量b的值,但是程序返回的依然是20,并不是30,说明finally语句块执行完毕后,程序直接将之前缓冲的值返回了。所以这就是真实的执行流程。b、try块中有return,finally语句块中也有return,此时的情况是什么样呢?看代码:public class Demopublic static void main(String args)int num = 10;System.out.println(test(num);public static int test(int b)tryb += 10;return b;catch(RuntimeException e)catch(Exception e2)finallyb += 10;return b;结果是:H:java Demojava Demo30说明:为什么此时结果是30了呢,大家都知道return语句的作用是结束程序体,所以此段代码依然是先执行try块中的return语句,并将20缓存起来,接着跳转到finally语句块执行,但是由于finally语句块中有return语句,所以程序在此处结束,并不返回到try块中返回结果,而是直接将finally块中新修改的值即30,返回。c、try块中有return语句,catch块中也有return语句,这时候是最简单的一种情况:看代码:public class Demopublic static void main(String args)int num = 10;System.out.println(test(num);public static int test(int b)tryint a = b/0;return b;catch(Exception e2)b += 10;return b;结果:H:java Demojav
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 期货从业资格之期货投资分析复习提分资料附答案详解(研优卷)
- 期货从业资格之期货投资分析题库检测试题打印及参考答案详解(新)
- 期货从业资格之期货投资分析通关检测卷含答案详解【新】
- 期货从业资格之期货投资分析强化训练题型汇编附参考答案详解(夺分金卷)
- 2025集体宿舍租赁权转让合同的范本
- 旧区改造安全方案(3篇)
- 应急物资使用保障方案(3篇)
- 北京市石景山区2024-2025学年高一下学期期末考试政治试题(含解析)
- 事业编考试题库及答案e类b类
- 电梯展览设计方案(3篇)
- 艾梅乙反歧视培训课件
- GB/T 10069.3-2024旋转电机噪声测定方法及限值第3部分:噪声限值
- Swanson人工跖趾关节置换术
- 中国农业银行笔试题库(含答案)
- 婚礼嘉宾坐席安排表模板
- GA 1808-2022军工单位反恐怖防范要求
- GB/T 17737.105-2018同轴通信电缆第1-105部分:电气试验方法电缆介质的耐电压试验
- GB 9959.1-2001鲜、冻片猪肉
- 关于创新开发区管理体制机制的思考
- 北京理工大学应用光学课件(大全)李林
- 院前急救120出诊流程图
评论
0/150
提交评论