这种情况会导致编译器发出 finally block does not complete normally 的警告。 异常被 finally 块中的代码吞没:如果 try 块中抛出了异常,但在 finally 块中没有正确处理这个异常(例如,没有重新抛出或记录日志),那么异常可能会被 finally 块中的代码吞没,导致调用者无法感知到异常的发生。 3. 解决方案或调试建议 ...
1、不管try块、catch块中是否有return语句,finally块都会执行。 2、finally块中的return语句会覆盖前面的return语句(try块、catch块中的return语句),所以如果finally块中有return语句,Eclipse编译器会报警告“finally block does not complete normally”。 3、如果finally块中包含了return语句,即使前面的catch块重新抛出了...
1、不管try块、catch块中是否有return语句,finally块都会执行。 2、finally块中的return语句会覆盖前面的return语句(try块、catch块中的return语句),所以如果finally块中有return语句,Eclipse编译器会报警告“finally block does not complete normally”。 3、如果finally块中包含了return语句,即使前面的catch块重新抛出了...
3.当try,catch中有return,finally中有return时,try,catch中的return被finally中的return覆盖,最后真正返回的是finally中经过处理的返回值。 我们再看一下警告信息“finally block does not complete normally”,它是因为try,catch中有return,而且finally中也有return,finally中的return会覆盖掉try,catch中的return,可能导...
当finall块中包含return语句时,Eclipse会给出警告“finally block does not complete normally”,原因分析如下: 1、不管try块、catch块中是否有return语句,finally块都会执行。 2、finally块中的return语句会覆盖前面的return语句(try块、catch块中的return语句),所以如果finally块中有return语句,Eclipse编译器会报警告“...
在eclipse中编写例如以下的代码,eclipse会给出黄色告警:finally block does not complete normally。 public class Test { public static void main(String[] args) { System.out.println(m1(null)); } public static String m1(String name) { try
今天用try-finally的时候,整出一个“finally block does not complete normally”的警告。想了半天也没明白什么一个情况。 可以看下面的代码, return 写在finally块就会得到警告!解决方案: return放到finally外面。 但是,java里面不是可以保证finally一定会执行的么,为什么不可以在finally块做return???
try block, i = 2 finally block i = 10 10 先执⾏try块,并没有捕获到异常,finally 块,最后return。2.当我们把return放到try块中和catch块中,会怎么样呢?你们会不会纠结先return呢还是先finally呢?返回值i会改变吗?1public static void main(String[] args) { 2// TODO Aut...
finally中最好不要包含return,否则程序会有警告(finally block does not complete normally)可能会使程序提前退出,返回值不是try或catch中保存的返回值。 注:有两种情况finally块将不会执行 在try语句还没有执行就return了。故finally块被执行的充分必要条件:对应的try语句一定执行。
* Warning: finally block does not complete normally * 如果finally块中包含了return语句,即使前面的catch块重新抛出了异常,则调用该方法的语句也不会获得catch块重新抛出的异常,而是会得到finally块的返回值,并且不会捕获异常。 */str ="finally";returnstr; ...