代码顺序执行从try到finally,由于finally是无论如何都会执行的,所以try里的语句并不会直接返回。在try语句的return块中,return返回的引用变量并不是try语句外定义的引用变量i,而是系统重新定义了一个局部引用i’,这个引用指向了引用i对应的值,也就是2,即使在finally语句中把引用i指向了值10,因为return返回
当try块中包含return语句时,如果执行过程中没有异常发生,那么会先执行return前的代码,然后执行finally块中的代码,最后执行return语句返回结果。例如: privateinttestReturn1(){inti=1;try{ i++; System.out.println("try:"+ i);returni; }catch(Exception e) { i++; System.out.println("catch:"+ i); ...
1、不管有没有出现异常,finally块中代码都会执行; 2、当try和catch中有return时,finally仍然会执行; 3、finally是在return后面的表达式运算之后执行的; 对于含有return语句的情况,这里我们可以简单地总结如下: try语句在返回前,将其他所有的操作执行完,保留好要返回的值,而后转入执行finally中的语句,而后分为以下三种...
先执行finally 在Java异常处理机制中,当try或catch块中遇到return或throw时,程序会先检查是否存在finally块。若存在finally块,系统会立即跳转执行其中代码。只有在finally块完全执行后,才会返回执行try/catch中的return或throw;如果finally块中包含return或throw,则直接在此处终止,不再返回原逻辑。此机制确保了finally块的...
3)若程序中存在异常处理,则try语句捕获该异常类的实例化对象; 4)捕获到的异常类实例化对象,要与catch中的异常类型依次匹配; 5)若catch匹配了异常类型,则使用相应代码进行处理,随后执行finally,若没有匹配,则直接跳转到finally语句; 6)执行完finally后,要判断该异常是否处理过,若处理过,则继续执行后续代码,否则,交...
public int testMethod() { try { return 1; } finally { return 2; // 不建议这样做,最终返回的值是2 } } 上面这个例子,finally中的return 2;会覆盖try中的返回值,导致方法返回的是2,而不是1。 总结 无论是否有异常,finally块都会执行。 如果try或catch中有return,finally仍然会执行。 finally是在ret...
catch (Exception e) { i++ ;System.out.println("catch:" + i);} finally { i++ ;System.out.println("finally:" + i);} return i;} 执行结果:try :2 finally :3 2 因为当try中带有return时,会先执行return前的代码,然后暂时保存需要return的信息,再执行finally中的代码,最后再通过return返回...
二、try-catch-finally 语句块 这种语法块我分为了 4 种情况讨论,下面进行一一列举。 1、第一种情况,try 块里面有 return 的情况,并且捕获到异常 例1: public static void main(String[] args) { String result = handleException1(); System.out.println(result); ...
try:2 finally:3 2 1. 2. 3. 需要注意的是,如果return语句之前有修改基本数据类型的操作,那么finally块中的修改不会影响最终的返回值。 二、catch中带有return 当catch块中包含return语句时,如果try块中发生异常,那么catch块会捕获异常并执行其中的代码,包括return语句。例如: ...
在Java中,finally块也会在try和catch之后执行,即使在catch块中使用了return语句。无论是成功执行try块中的代码还是在catch块中捕获异常,finally块中的代码都会被执行。 以下是一个Java的示例来说明这个行为: publicclassTest{publicstaticStringtest(){try{thrownewException("An error occurred");}catch(Exception e)...