java异常处理中的return语句[重复]

Posted

技术标签:

【中文标题】java异常处理中的return语句[重复]【英文标题】:return statement in java exception handling [duplicate] 【发布时间】:2013-03-15 01:30:26 【问题描述】:

如果执行没有导致异常,则控制转到 finally 块。 那么,JVM 是否忽略了 try 块中的 return 语句?。或者,如果发生异常,则控制转到 catch 块,它也忽略返回语句,控制转到 finally 块并从 finally 返回

  public class Helper 
     public int showException(int a, int b)

           try
           int c=a/b;
           return c;
            catch(Exception e)
                return 0;
            finally
               return 3;
             
     
  

【问题讨论】:

'return' 在 catch 块中是糟糕的设计。 无论如何,Finally 总是运行,尝试删除 finally(如果不需要)。 @Falaque 为什么会这样?如果您的操作成功后需要返回怎么办? @ToonCasteele 如果成功,它不会去抓块。 那么您总是将return false; 放在方法的末尾以防不成功? 【参考方案1】:

因为无论你输入try还是catch,每次都会执行finally块,我想这就是为什么它被称为finally :)

FROM JAVA DOCS

finally 块总是在 try 块退出时执行。这 确保即使出现意外情况也会执行 finally 块 发生异常。

注意:只有在

如果在执行 try 或 catch 代码时 JVM 退出,则 finally 块可能不会执行。同样,如果线程正在执行 try 或 catch 代码被中断或杀死,finally 块可能 即使整个应用程序继续运行,也不会执行。

【讨论】:

我要问的是,如果try中没有异常,那么try中的return应该执行,或者如果发生异常,catch中的return应该执行,然后控制权转到finally。这是否意味着JVM忽略了try或catch块中的返回 @sonal:是的,只有当您在 finally 中定义了 return 时,它才会忽略 try 中的 return @sonal: 放置在 finally 块中的代码必须在 try 块中发生的任何情况下执行 嗯...谢谢codeMaker【参考方案2】:

根据设计,finally 块中的返回总是优先。

【讨论】:

【参考方案3】:

无论是否调用 catch 块,最后都会被调用。也许您想阅读更多文档。 MSDN Try Catch Finally

【讨论】:

这是关于 java,而不是 javascript 当我点击链接时,链接会转到 javascript...【参考方案4】:

不管try catch块是否执行,finally块总是被执行

【讨论】:

try/catch 块中的 return 怎么样,JVM 是否只从 finally 返回。【参考方案5】:

finally 块总是在 try 块退出时执行。这 确保即使出现意外情况也会执行 finally 块 发生异常。但 finally 不仅仅对异常有用 处理——它允许程序员避免清理代码 意外地被返回、继续或中断绕过。进行清理 finally 块中的代码始终是一个好习惯,即使没有 预计会有例外情况。

阅读更多here

【讨论】:

以上是关于java异常处理中的return语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章

异常处理机制中的return关键字

java 异常不处理会怎么样

Java中的异常处理机制

Java基础异常处理与输入输出流

Java——基础知识(十三)——异常

Java基础——try-catch-finally语句