相关疑难解决方法(0)

finally块总是在Java中执行吗?

考虑到这一点的代码,我可以绝对肯定的是,finally块总是执行,不管something()是什么?

try {  
    something();  
    return success;  
}  
catch (Exception e) {   
    return failure;  
}  
finally {  
    System.out.println("I don't know if this will get printed out");
}
Run Code Online (Sandbox Code Playgroud)

java return try-catch-finally

2281
推荐指数
38
解决办法
48万
查看次数

finally块总是运行吗?

是否有任何条件最终可能无法在java中运行?谢谢.

java finally

110
推荐指数
8
解决办法
7万
查看次数

在Java中,是否保证要调用"finally"块(在main方法中)?

我是一个Java新手,我想知道,如果我有以下典型的Java代码

public class MyApp {
  public static void main(String[] args) {
    try {
      // do stuff
    } catch {
      // handle errors
    } finally {
      // clean up connections etc.
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

JVM是否保证finally块始终运行?为了理解我来自哪里,我习惯了C/C++程序,如果你取消引用一个NULL指针就可能崩溃,之后就不能运行任何代码了.

但是,由于我理解Java和整个GC /托管内存业务,所以没有空指针解除引用的东西,一切都是可捕获的预期,所以我的程序没有真正的崩溃方式可以让它跳过最后,或者在那里?例如,在Python中,我通常会这样做

try:
  # do stuff
except AnExceptionIKnewMightHappen:
  # react in an appropriate way
except:
  # log that weird error I had not known could happen
Run Code Online (Sandbox Code Playgroud)

我没有通过我的代码就没有任何应用程序死亡.

当然,如果操作系统由于某种原因导致进程终止(或者如果某些东西杀死了整个系统,比如拉动插件),那么Java就无法做到.此外,从PHP我知道你无法防范的非可捕获错误,即使解释器在它发生之后仍然存在(至少它能够输出正确的消息).

编辑:为了清楚起见(这并没有被任何人误解),让我补充一点,我在寻找代码中的内容,这可能会导致最终被绕过.所以指向System.exit是一个有用的提醒,即使我不明白为什么我想要做那样的事情.

退出JVM是一种相当明显的方式,我认为这是一个外部原因.该注释指出你还必须记住在JVM和应用程序继续运行时退出的线程的可能性非常有用,因为即使现在我看起来也很明显,我没有想到它.

java error-handling finally

24
推荐指数
3
解决办法
2万
查看次数

try,catch和finally的执行顺序是什么

如果我们在try中给出这样的return语句,那么执行的顺序是什么

try{
--- ----
-----
return a;
}

catch{
}
finally{
}
Run Code Online (Sandbox Code Playgroud)

如果在try中有返回,那么将执行的顺序是什么.请告诉我

java exception

6
推荐指数
1
解决办法
2902
查看次数

变量未在try catch块`finally`中初始化

为什么编译器不能理解变量是在块trycatch块中初始化而在块中抱怨finally

int i;
try {
    i = 0;
}
catch (Exception e) {
    i = 2;
}
finally {
    System.out(i);
}
Run Code Online (Sandbox Code Playgroud)

java syntax compiler-errors

4
推荐指数
1
解决办法
1099
查看次数

在下列情况下最终阻止会发生什么?

如果我有以下代码

      try{

           //some code

      }catch(Exception e){

           //some code

      }finally{

      }
Run Code Online (Sandbox Code Playgroud)

在以下情况下,finally块会发生什么

  1. 如果发生任何已检查的异常

  2. 如果调用System.exit().

  3. 如果发生任何未经检查的异常

  4. 如果发生任何错误.

java

2
推荐指数
1
解决办法
698
查看次数