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语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章