use*_*755 1 java exception autocloseable
我有这段代码:
public class Resource implements AutoCloseable{
private String s = "I am resource.";
private int NuberOfResource;
public Resource(int NuberOfResource) {
this.NuberOfResource = NuberOfResource;
System.out.println(s + " My number is: " + NuberOfResource);
}
@Override
public void close() throws Exception {
System.out.println("Closing...");
}
public void print(){
System.out.println("Hello");
}
Run Code Online (Sandbox Code Playgroud)
主要课程:
public class Main {
public static void main(String[] args) {
int a, b = 0;
a = 5;
try {
Resource first = new Resurs(1);
Resource second = new Resurs(2);
System.out.println("I will cause exception");
a /= b;
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么我得到这个输出:
I am resource. My number is 1.
I am resource. My number is 2.
I will cause exception.
java.lang.ArithmeticException: / by zero
Run Code Online (Sandbox Code Playgroud)
代替:
I am resource. My number is 1.
I am resource. My number is 2.
Closing...
Closing...
I will cause exception.
java.lang.ArithmeticException: / by zero
Run Code Online (Sandbox Code Playgroud)
Kay*_*man 10
因为你没有使用try-with-resources
.AutoCloseable
仅使用它调用,而不是使用常规try/catch
语句.
正确的模式是
try(Resource first = new Resource(1); Resource second = new Resource(2)) {
// .. whatever
}
Run Code Online (Sandbox Code Playgroud)