相关疑难解决方法(0)

finally块总是运行吗?

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

java finally

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

尝试用资源引入无法访问的字节码

javac是否有可能为以下过程生成无法访问的字节码?

public void ex06(String name) throws Exception {
    File config = new File(name);
    try (FileOutputStream fos = new FileOutputStream(config);
            PrintWriter writer = new PrintWriter(new OutputStreamWriter(
                    fos , "rw"))) {
        bar();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我查看字节码的异常表(javap -v)时,有以下条目看起来很奇怪:

43    48    86   Class java/lang/Throwable
43    48    95   any
Run Code Online (Sandbox Code Playgroud)

21   135   170   Class java/lang/Throwable
21   135   179   any
Run Code Online (Sandbox Code Playgroud)

现在的问题是,如果捕获了类型为"any"而不是Throwable的异常,则只能访问某些代码.有没有可能发生这种情况的情况?

======编辑======感谢目前为止的答案.让我给出另一个证据来表明我真的不理解异常处理:考虑以下过程

Object constraintsLock;
private String[] constraints;
private String constraint;
public void fp01() {
    // Add this constraint to the set for our web application
    synchronized (constraintsLock) …
Run Code Online (Sandbox Code Playgroud)

java jvm exception-handling javac try-catch

17
推荐指数
1
解决办法
1343
查看次数

System.exit()结果无法执行finally块

我正在努力 My application's under maintanace module

try {
    if (isUndermaintanace) {
        System.exit(1);
    } else {
        prepareResources();
    }           
} catch (Exception e) {
    printStack(e);
} finally {
    cleanResources();
}
Run Code Online (Sandbox Code Playgroud)

当我通过 isundermaintanace true 最后没有执行.

我错过了什么?还有其他办法吗?

java try-catch-finally system.exit

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