java try throw exception finally 遇上 return break continue造成异常丢失

这篇具有很好参考价值的文章主要介绍了java try throw exception finally 遇上 return break continue造成异常丢失。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    如下所示,是一个java笔试题,考察的是抛出异常之后,程序运行结果,但是这里抛出异常,并没有捕获异常,而是通过finally来进行了流程控制处理。

package com.xxx.test;

public class ExceptionFlow {
    public static void main(String[] args) {
        try {
            System.out.println("hello " + func());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static int func() {
        int a = 0;
        for (int i = 0; i < 3; i++) {
            try {
                throw new RuntimeException("xx");
            } finally {
                 continue;
            }
        }
        return a;
    }
}

    运行程序,打印结果如下所示:

java try throw exception finally 遇上 return break continue造成异常丢失,java,java,exception,finally,catch,break continue 

    这里结果有些出人意料,并没有打印异常信息,其实就是try finally遇到了continue,导致异常信息丢失。如果这里,我们稍微改变一下,把finally中的continue注释,再来看看结果:

java try throw exception finally 遇上 return break continue造成异常丢失,java,java,exception,finally,catch,break continue 

    这次打印了异常信息。

   下面再来看看另一个例子:

package com.xxx.test;
public class ExceptionDemo {
    public static void main(String[] args) {
        try {
            func();
            System.out.println("A");
        } catch (Exception e) {
            System.out.println("C");
        }
        System.out.println("D");
    }

    public static void func() {
        try {
            throw new Exception();
        } finally {
            System.out.println("B");
        }
    }
}

    这里要求写出程序运行结果。

    这道题的答案其实就是编译不通过,如下所示:

java try throw exception finally 遇上 return break continue造成异常丢失,java,java,exception,finally,catch,break continue 

    这里需要在func方法签名上声明抛出异常。方法签名上添加了抛出异常,这里就编译成功,运行结果是B C D。

    这里其实也可以不用在方法签名上进行声明,直接把异常改成自定义异常RuntimeException("xx"),最终程序运行结果也是一样的。 

    这里我们按照第一个题目的思路,把finally中添加return信息,这时候,运行结果会变为B A D。

java try throw exception finally 遇上 return break continue造成异常丢失,java,java,exception,finally,catch,break continue

   因为异常信息丢失,所以在调用func()的地方,进行try catch的时候,就不会有异常信息,那么程序就会按照正常的流程运行。 文章来源地址https://www.toymoban.com/news/detail-713377.html

到了这里,关于java try throw exception finally 遇上 return break continue造成异常丢失的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Python中,使用try-except-finally块处理异常

    在Python中,异常处理是一种重要的编程技术。当程序运行时发生错误或异常时,使用try-except-finally块可以优雅地处理这些异常,避免程序崩溃或产生不可预料的结果。 try-except-finally块的基本语法如下: 在上述代码中,try块中包含可能会触发异常的代码。如果try块中的代码正

    2024年02月13日
    浏览(91)
  • Python 异常处理:try、except、else 和 finally 的使用指南

    当发生错误(或我们称之为异常)时,Python 通常会停止执行并生成错误消息。 try 块用于测试一段代码是否存在错误。 except 块用于处理错误。 else 块用于在没有错误时执行代码。 finally 块用于无论 try 和 except 块的结果如何都要执行的代码。 可以使用 try 语句来处理这些异常

    2024年02月06日
    浏览(45)
  • Python 异常处理 try-except,else,finally, with 语句的区别

    在日常编写程序时,难免会遇到错误,有的是由于疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还有的是程序运行时与系统的规则冲突造成的系统错误,等等。 总的来说,编写程序时遇到的错误可大致分为 2 类,分别为语法错误和运行时错误。 Pyth

    2023年04月08日
    浏览(38)
  • java forEach中不能使用break和continue的原因

      1.1使用范围 break适用范围:只能用于switch或者是循环语句中。当然可以用于增强for循环。 continue适用范围: 用于循环语句中。  1.2作用 break: 1. break用于switch语句的作用是结束一个switch语句。 2. break用于循环语句中的作用是结束当前所在的循环语句。 continue: 1.中止当前迭代

    2024年02月19日
    浏览(40)
  • Java的list.forEach能否实现continue和break

    Java的forEach是一个方便的遍历集合的方法,它的实现方式不允许使用continue语句来跳过某些元素,但可以使用return语句来达到类似continue的效果,也就是说在需要使用continue;的位置直接使用return;替代即可。例如: forEach循环是一种基于迭代器的循环方式,不支持使用break语句来

    2024年02月16日
    浏览(45)
  • Java break、continue 详解与数组深入解析:单维数组和多维数组详细教程

    Java Break: break 语句用于跳出循环或 switch 语句。 在循环中使用 break 语句可以立即终止循环,并继续执行循环后面的代码。 在 switch 语句中使用 break 语句可以跳出当前 case,并继续执行下一个 case。 示例: Java Continue: continue 语句用于跳过当前循环的剩余部分,并继续执行循环的

    2024年02月19日
    浏览(43)
  • Effective Java笔记(9)try-with-resources 优先于 try -finally

            Java 类库中包括许多必须通过调用 close 方法来手工关闭的资源 。 例如 InputStream 、OutputStream 和 java.sql.Connection 。 客户端经常会忽略资源 的关闭 ,造成严重的性能后果也就可想而知了 。 虽然这其中的许多资源都是用终结方法作为安全网,但是效果并不理想。  

    2024年02月15日
    浏览(52)
  • java中的异常,以及出现异常后的处理【try,catch,finally】

    异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 注意: 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。 异常机制其实是帮助我们找到程序中的问题

    2024年02月08日
    浏览(41)
  • Python循环语句——continue和break

    在Python编程中,循环是常见的控制流语句,它允许我们重复执行一段代码,直到满足某个条件为止。而在循环中,continue和break是两个非常重要的控制语句,它们可以帮助我们更加灵活地控制循环的行为。 continue语句用于跳过当前循环的剩余部分,并立即开始下一次迭代。它常

    2024年02月20日
    浏览(46)
  • Shell脚本break和continue语句应用

    记录 :436 场景 : Shell脚本break和continue语句应用。在for、while循环中使用break和continue语句。 版本 :CentOS Linux release 7.9.2009。 1. break和continue语句 break语句用来结束循环语句,会跳出循环,不再执行循环语句。比如for循环、while循环等。 continue语句用来结束本次循环,直接跳到

    2024年02月06日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包