Java笔试口试总结―try、catch、finally语句中有ret
分类:互联网事 热度:

媒介

以前在刷笔试题和口试的时间每每会碰到大概被问到 try-catch-finally语法块的施行按次等题目,本日就抽暇清算了一下这个知识点,而后记录下来。

Java笔试口试总结―try、catch、finally语句中有return各种状况

正文

本篇文章重要是经过举例的方法来论述种种状况,我这里凭据 try-catch-finally 语法块分为两种大状况接头:try-catch 语法块和try-catch-finally 语句块,而后再在每种情形里再去详细接洽。

一、try-catch 语句块

咱们能够看看下面法式:

实行了局:

try起头 捕捉到了非常 catch的返回值

阐明:法式起首履行 try 块内里的代码,try 块内里发明有异样,try 块背面的代码不会施行(天然也不会return),而后进入立室异样的那个catch 块,而后进入 catch 块内里将代码执行结束,当实行到 catch 内里的return 语句的时分,步伐中断,而后将此 return的终极了局返回归去。

二、try-catch-finally 语句块

这类语法块我分为了 4 种情形接头,下面举行一一列举。

第一种状况,try 块内里有 return 的环境,而且捕捉到异样

例1:

例1履行的成效以下:

try起头 捕捉到了非常 finally块实行结束了 终极的后果

例2:

例2的实行成效以下:

try最先 捕捉到了非常 finally块履行终了了 终极的成效

阐明:起首 例1 和 例2 的成绩是很明显的,当碰到非常的时间,直接进入立室到相对于应的 catch 块,而后继续执行 finallly 语句块,末了将return 成效返回归去。

第二种情形:try块内里有return的状况,可是不会捕捉到非常

例3:

思虑:下面代码try语句块中有return语句,那末能否施行完try语句块就直接return退出办法了呢?

例3的实行成绩以下:

finally块施行终了了 try块的返回值

剖析:例3的成果实在咱们能够经过打断点的体例去看看法式的详细实行流程,经过打断点咱们能够发明,代码先施行 try块 里的代码,当履行到 return语句的时辰,handleException3方式并没有立即竣事,而是继续执行finally块里的代码,finally块里的代码执行完后,紧接着回到 try 块的return 语句,再把终极效果返回归去, handleException 法子实行结束。

第三种状况:try块和finally内里都有return的状况

例4:

例4的履行成效:

finally块履行结束了 finally的返回值

剖析:需求细致的是,当 try 块和 finally 内里都有 return 的时间,在 try/catch/finally语法块以外不容许再有return 关键字。咱们照旧经过在法式中打断点的方法来看看代码的详细施行流程。代码起首施行 try 块 里的代码,当施行到 return语句的时间,handleException4 办法并没有立即终了,而是继续执行 finally 块里的代码,当发明 finally 块里有 return的时刻,直接将 finally 里的返回值(也就是终极了局)返回归去, handleException4 方式施行终了。

第四种状况:try块,catch块,finally块都有return

例5:

例5的履行后果:

剖析:顺序起首施行try块内里的代码,try块内里发明有非常,try块背面的代码不会实行(天然也不会return),而后进入立室异样的那个catch块,而后进入catch块内里将代码执行终了,当履行到catch内里的return语句的时分,法式不会立地停止,而是继续执行finally块的代码,末了施行finally内里的return,而后将此return的终究成效返回归去。

总结

实在,咱们经过以上例子咱们能够发明,不论return关键字在哪,finally必定会履行终了。实践上来讲try、catch、finally块中都容许誊写return关键字,然则履行优先级较低的块中的return关键字界说的返回值将笼罩履行优先级较高的块中return关键字界说的返回值。也就是说finally块中界说的返回值将会笼罩catch块、try块中界说的返回值;catch块中界说的返回值将会遮盖try块中界说的返回值。再换句话说若是在finally块中经过return关键字界说了返回值,那末以前全部经过return关键字界说的返回值都将失效——由于finally块中的代码必然是会施行的。

Java笔试口试总结―try、catch、finally语句中有return各种状况

上一篇:警惕翻车!这才是建造Windows 10装置U盘的准确姿态 下一篇:Deno VS Node:Javascript开发人员更喜好前者的五大缘
猜你喜欢
各种观点
热门排行
精彩图文