java_try,catch,finally return之间的执行顺序
Posted tanyunlong_nice
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java_try,catch,finally return之间的执行顺序相关的知识,希望对你有一定的参考价值。
掌握下面几条原则就可以完全解决“当try、catch、finally遭遇return”的问题。
原则:1、finally语句块中的代码是一定会执行的,而catch块中的代码只有发生异常时才会执行。
2、 函数执行完try块中的return语句后不会终止,还会继续执行catch(仅在抛出异常时执行)、finally语句块。
3、函数必须确保有唯一返回值
说明: try中如果包含return语句则catch块和finally块中必须至少有一个含有return语句。或者try中通过throw new Exception();抛出异常,则catch与finally中至少有一个return语句。因为try块会假定其中发生异常,且try块中的代码要么顺利执行,要么抛出异常。如果只在try块中包含return语句不能保证函数有返回值(如try抛出时,return语句不会执行)。所以为了保证函数具有返回值,java强制要求原则。
4、return语句的优先级是finally最大,且try与catch块中只有两者之一的return语句会被执行。为保证函数只有一个返回值则返回优先级最大的值。
以上是关于java_try,catch,finally return之间的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章
为啥 try..catch..finally 块的 finally 节在 catch 之前运行?
try-catch-finally 中哪个部分可以省略?try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?