应该尝试始终跟随捕获?

cod*_*r25 0 java try-catch

static void test() {
    try {
        System.out.print(x.toString() + " ");
    }
    finally { System.out.print("finally "); }
}

public static void main(String args[])
{
    try 
    {
        test(); 
    }
    catch (Exception ex) { System.out.print("exception "); 
}
Run Code Online (Sandbox Code Playgroud)

输出是finally exception.

为什么会出现在编译时被抛出任何错误,虽然try后面没有catchtest()

Pet*_*rey 9

Java 7添加ARM(自动资源管理)意味着您可以try单独使用.

try (PrintWriter pw = new PrintWriter("out.txt")) {
    pw.println("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)

pw当此范围退出时,这将关闭.


Bor*_*vić 6

版本7之前的Java版本允许try-catch-finally的这三种组合:

try - catch
try - catch - finally
try - finally
Run Code Online (Sandbox Code Playgroud)

异常可能是NullPointerException因为没有x声明为静态字段并在内联或main方法中初始化.finally无论在try/和catch块中发生了什么,都将始终执行块.