finally 块后无法访问的语句

     2023-02-23     167

关键词:

【中文标题】finally 块后无法访问的语句【英文标题】:unreachable statement after finally block 【发布时间】:2019-02-18 05:00:27 【问题描述】:

我正在学习 Java 中的异常,并且在此示例中遇到了编译错误:

public class FinallyExceptionExample 
    public static void main (String[] args) throws Exception 
        try 
            System.out.println("1");
            throw new Exception();
         finally
            System.out.println("3");
        
        System.out.println("4");
    

例外是行的“无法访问的语句”:

System.out.println("4");

我想知道为什么我会收到这个错误,通常在最后我们继续执行代码之后?

【问题讨论】:

不,为什么在发生未捕获的异常后代码会正常继续执行? 你的方法抛出了一个异常并且没有捕捉到它,所以try/finally块之后的任何东西都无法到达。 @khelwood 但最终块已执行。 是的,但是 finally 块没有捕获异常。它运行了,然后异常仍然没有被捕获,所以方法退出了。 【参考方案1】:

你没有发现你的异常。所以打印 1,执行 finally 块,然后抛出异常。 4永远不会被调用

【讨论】:

【参考方案2】:

finally 语句不会捕获try 块中抛出的异常。只有catch 语句可以捕获异常。

因此,永远不会到达System.out.println("4");,因为 try 块总是抛出未捕获的异常。

【讨论】:

【参考方案3】:

你抛出一个异常而不捕获它。这将导致代码执行提前终止,并且永远不会到达最后一行。

【讨论】:

【参考方案4】:

来自Oracle documentation

finally 块总是在 try 块退出时执行。这可以确保即使发生意外异常也会执行 finally 块。但是 finally 不仅仅对异常处理有用——它允许程序员避免清理代码被 return、continue 或 break 意外绕过。将清理代码放在 finally 块中始终是一种很好的做法,即使没有预料到异常也是如此。

记住:finally 不会捕获异常!

【讨论】:

异常及异常处理

...将把这里内容执行完后,如有finally语句块将执行finally语句块后结束,否则直接结束异常抛出语句块。*}finally{*异常语句块结束后必执行的语句块,一般用于释放内存。*}***抛出异常语法*publicvoid方法名()throw 查看详情

更改滑块后无法更新文本

】更改滑块后无法更新文本【英文标题】:Can\'tgetTexttoupdateafterchangingslider【发布时间】:2019-11-1200:39:41【问题描述】:我有一个自定义的嵌入视图,其中包含文本和一个绑定到ObservedObject的滑块。我可以通过更改滑块成功更新绑... 查看详情

为啥 scala 函数中的块变量在执行内部块后无法更新?

】为啥scala函数中的块变量在执行内部块后无法更新?【英文标题】:Whyablockvariableinscalafunctioncouldnotupdateafterexecutedtheinnerblock(s)?为什么scala函数中的块变量在执行内部块后无法更新?【发布时间】:2016-07-1412:00:05【问题描述】:... 查看详情

第13条:合理利用try/expect/else/finally结构中的每个代码块

...y复合语句中地finally块来执行清理工作。(2)顺利运行try块后,若想使某些操作能在finally块地清理代码之前执行,则可将这些操作写入到else块中 Python程序的异常处理可能要考虑四种不同的时机。这些时机可以用try、expect、e... 查看详情

在 S3 中上传输入流块后无法解压缩 gzip 文件

】在S3中上传输入流块后无法解压缩gzip文件【英文标题】:UnabletodecompressgzippedfilesafteruploadinginputstreamchunksinS3【发布时间】:2019-06-2421:00:15【问题描述】:我想以与分段上传器类似的方式获取我的输入流并将压缩后的部分上传到s... 查看详情

为啥 Java 编译器不会为无法访问的 then 语句生成无法访问的语句错误?

】为啥Java编译器不会为无法访问的then语句生成无法访问的语句错误?【英文标题】:WhydoesaJavaCompilernotproduceanunreachablestatementerrorforanunreachablethenstatement?为什么Java编译器不会为无法访问的then语句生成无法访问的语句错误?【发... 查看详情

请简述java中try-catch-finally语句的执行过程简单明了好的话加分(曹苇提问)

...样都执行finally里的语句 参考技术C无修饰符(default):不能访问,子类跟父类在同一个包下除外private:不能访问,子类为父类的内部类时除外protected:能访问public:能访问 查看详情

java复习-final

...。对于一个private方法,因为它仅仅在当前类可见,子类无法访问该方法,所以子类无法重写该方法,也无法访问该方法,但是子类可以写一个一模一样的方法出来,但是这不是 查看详情

它显示无法访问的语句错误

】它显示无法访问的语句错误【英文标题】:It\'sshowingunreachablestatementerror【发布时间】:2017-12-0806:18:24【问题描述】:我正在尝试对选定的项目进行祝酒,但它显示了无法访问的语句错误。我的代码是:btn=(Button)findViewById(R.id.bu... 查看详情

无法访问的语句[重复]

】无法访问的语句[重复]【英文标题】:Unreachablestatements[duplicate]【发布时间】:2015-11-3019:00:33【问题描述】:我正在为OCA考试而学习,但我不明白为什么parseFloat()中的最后一行无法访问,而go()中的最后一行却不是。除了返回类... 查看详情

trycatchfinally

...catch中返回。finally影响不了返回值。try和catch中的代码都无法保证一定执行,但finally一定会执行。 查看详情

上传 2 张图片时无法访问的语句

】上传2张图片时无法访问的语句【英文标题】:UnreachableStatementwhileUploading2Images【发布时间】:2020-08-2109:22:56【问题描述】:我正在尝试上传2张图片,这是一个用于此目的的类。但是,我收到了无法访问的语句错误。publicclassupl... 查看详情

编译错误 - 无法访问的语句

】编译错误-无法访问的语句【英文标题】:Compilingerror-unreachablestatement【发布时间】:2011-10-3101:04:28【问题描述】:我收到此错误:src\\server\\model\\players\\Client.java:1089:error:unreachablestatementPlayerSave.saveGame(this);^Note:Someinputfilesuseunche 查看详情

编译问题:无法访问的语句

】编译问题:无法访问的语句【英文标题】:Compilationissue:Unreachablestatement【发布时间】:2013-10-2907:59:48【问题描述】:大家晚上好,我遇到了一些用于介绍性Java类的代码的编译问题。手头的应用程序创建了一个计算器。在尝试... 查看详情

条件后无法访问的语句[关闭]

】条件后无法访问的语句[关闭]【英文标题】:Unreachablestatementafterconditional[closed]【发布时间】:2020-06-0121:03:36【问题描述】:以下代码给出错误:Unreachablestatementforcurrent=current.getmNextNode();如何解决?publicintindexOf(Eelement)Nodecurrent=... 查看详情

PHP 中无法访问的语句

】PHP中无法访问的语句【英文标题】:UnreachableStatementinPHP【发布时间】:2016-03-0315:39:44【问题描述】:require_once\'C:/wamp/www/FirstWebsite/CommonFunctions.php\';functionSelectRowByIncrementFunc()$dbhose=DB_Connect();$SelectRowByIncrementQuery=" 查看详情

(24)c#二维数组,排序功能,使用arraylist类,checked语句,finally语句

...能2.可以灵活的插入元素3.可以灵活的删除元素4.可以灵活访问元素二、局限性跟一般的数组比起来,速度上差些 查看详情

为啥我在 Java 中出现无法访问的语句错误?

】为啥我在Java中出现无法访问的语句错误?【英文标题】:WhydoIgetunreachablestatementerrorinJava?为什么我在Java中出现无法访问的语句错误?【发布时间】:2014-10-0202:23:50【问题描述】:我正在整理我在在线教程中找到的冰雹序列的... 查看详情