参考链接: Java中try catch finally

假设利用 return 语句从 try 语句块中退出。在方法返回前,finally子句的内容将被执行。如果 finally 子句中也有一个 return 语句,这个返回值将会覆盖原始的返回值。但是finally之外的则不会被执行

public int add(int a,int b)

{

try {

return a+b;

}

catch (Exception e) {

System.out.println("catch语句块");//不会执行

}

finally{

System.out.println("finally语句块");

}

//因为try中有return,所以finally之后的都不会执行

System.out.println("我不会出现的!");//不会执行

return 0;//不会执行

}

1、finally块一定会执行,无论是否try…catch。 2、finally前有return,会先执行return语句,并保存下来,再执行finally块,最后return。 3、finally前有return、finally块中也有return,先执行前面的return,保存下来,再执行finally的return,覆盖之前的结果,并返回。

public static void main(String[] args) {

int k = f_test();

System.out.println(k);

}

public static int f_test(){

int a = 0;

try{

a = 1;

return a;

}

finally{

System.out.println("It is in final chunk.");

a = 2;

return a;

}

}

/*输出:

It is in final chunk.

2*/

public static void main(String[] args) {

try {

int i = 100 / 0;

System.out.println(i);//try后面的语句不会执行

} catch (Exception e) {

System.out.println(1);

//throw new RuntimeException();

} finally {

System.out.println(2222);

}

//前面没有return语句,所以会执行

System.out.println(3);

}

/**

* 1

2222

3

*/

public static void main(String[] args) {

try {

int i = 100 / 0;

System.out.println(i);//后面的语句不会执行

} catch (Exception e) {

System.out.println(1);

throw new RuntimeException();//只会执行finally中的,其他的不会执行

} finally {

System.out.println(2222);

}

//不会执行

System.out.println(3);

}

/**

* 1

* 2222

* Exception in thread "main" java.lang.RuntimeException

*/

还是需要理解Try…catch…finally与直接throw的区别:

try catch是直接处理,处理完成之后程序继续往下执行.throw则是将异常抛给它的上一级处理,程序便不往下执行了。本题的catch语句块里面,打印完1之后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块之后,程序终止了

[转载] Java异常处理中Try-Catch-Finally中常见的笔试题相关推荐

  1. Java异常处理中try,catch,finally的各种组合用法

    1.try+catch 程序的流程是:运行到try块中,如果有异常抛出,则转到catch块去处理.然后执行catch块后面的语句 2.try+catch+finally 程序的流程是:运行到try块中 ...

  2. java 异常处理 return,求大神!!!!java 异常处理中return的意思

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在方法中使用return 就是返回到方法的调用方,而在main 方法中使用,返回到JVM(虚拟机),如果把上面的main 方法中的代码放在一个方法中,如下 ...

  3. java异常中return_求大神!!!!java 异常处理中return的意思

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在方法中使用return 就是返回到方法的调用方,而在main 方法中使用,返回到JVM(虚拟机),如果把上面的main 方法中的代码放在一个方法中,如下 ...

  4. Java异常之try,catch,finally,throw,throws

    Java异常之try,catch,finally,throw,throws 你能区分异常和错误吗? 我们每天上班,正常情况下可能30分钟就能到达.但是由于车多,人多,道路拥挤,致使我们要花费更多地时间 ...

  5. 异常处理中throws和throw的区别?

    异常处理中throws和throw的区别? 参考文章: (1)异常处理中throws和throw的区别? (2)https://www.cnblogs.com/suger-4/p/12192418.h ...

  6. python 异常处理中try else语句的使用

    python 异常处理中try else语句的使用 参考文章: (1)python 异常处理中try else语句的使用 (2)https://www.cnblogs.com/journey-mk5/ ...

  7. python中try和except语句语言导入包吗_Python异常处理中try与except用法的案例

    Python异常处理中try与except用法的案例 发布时间:2020-11-03 09:44:36 来源:亿速云 阅读:85 作者:小新 小编给大家分享一下Python异常处理中try与excep ...

  8. java方法后面throw的作用_Java异常处理中throw与throws的用法区别

    前言 说到异常,我们当然会想到try catch finally.当然如果用这个的话,被try块包围的代码说明这段代码可能会发生异常,一旦发生异常,异常便会被catch捕获到,然后需要在catch块中 ...

  9. [转载] Java异常:选择Checked Exception还是Unchecked Exception?

    参考链接: Java中的已检查与未检查异常| checked或unchecked异常 Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和 ...

最新文章

  1. Android知识点小结
  2. FTP的dos命令使用方法
  3. oracle set feedback off,Oracle数据库之Oracle导出数据中的prompt,set feedback 等是什么意思...
  4. fatal: 无法访问 ‘https://github.com/salesforce/WikiSQL/‘:GnuTLS recv error (
  5. Redis概述、数据类型
  6. java射击游戏_Java Swing打猎射击游戏源码
  7. *【HDU - 2586】How far away ? (LCA模板题,倍增)
  8. @PathVariable 注解 说明
  9. 探索比特币源码4-JSON-RPC接口的其他调用方法
  10. 生活中的算法的实际举例_驾校学的技术,在实际生活中,你能运用自如吗?
  11. 网络学习(一)网络版块主题介绍
  12. 智能优化算法(源码)-樽海鞘优化算法(Salp Swarm Algorithm,SSA)
  13. J2EE视频实战教程网址
  14. “杜拉拉升职记”电影看后感
  15. windows7、10磁盘分区以及磁盘扩展(详细教程以及注意事项)
  16. 上线、发布、发版流程
  17. 手机号码界面输入数字查看手机信息
  18. 规则引擎drools系列(一)
  19. Linux系统日志管理(redhat)
  20. 箱形图 python_Python-箱形图

热门文章

  1. 【编辑器】VSCode制表符Tab等修改
  2. 【poj3263】Tallest Cow(差分数组)
  3. 用jframe给MySQL输入数据_如何从JTextField输入Info到sql数据库?
  4. oracle的.aud文件,Oracle 11g 在audit_file_dest目录下产生大量的aud文件
  5. PAT—1082 射击比赛(20)
  6. Python入门--特殊方法__len__(),__add()__
  7. 医学生可以跨专业考计算机的专业,可以跨考医学研究生:2016跨专业考研需谨慎的专业解读:临床医学...
  8. 操作系统—覆盖与交换
  9. OpenGL基础28:模型
  10. Unity3D基础13:给物品添加力