Java Try 中的多个捕获断言
Java Assertion in Try with multiple catchs
场景:
class Assert {
public static void main(String []args) {
try {
assert false;
}
catch (RuntimeException re) {
System.out.println("In the handler of RuntimeException");
}
catch (Exception e) {
System.out.println("In the handler of Exception");
}
catch (Error ae) {
System.out.println("In the handler of Error");
}
catch (Throwable t) {
System.out.println("In the handler of Throwable");
}
}
}
我期待 'In the handler of Error' 因为 AssertionError 是 Error 的子类,但它不显示任何内容并正常终止。然后检查输出我在错误处理程序之前添加了这个捕获处理程序。
catch (AssertionError t) {
System.out.println("In the handler of Throwable");
}
我知道捕获错误不是一个好习惯,但如果我们不需要捕获程序未崩溃的原因,它会正常终止吗?
默认情况下禁用断言,在使用 java
执行代码时在命令行中添加 -ea
:
java -ea Assert
场景:
class Assert {
public static void main(String []args) {
try {
assert false;
}
catch (RuntimeException re) {
System.out.println("In the handler of RuntimeException");
}
catch (Exception e) {
System.out.println("In the handler of Exception");
}
catch (Error ae) {
System.out.println("In the handler of Error");
}
catch (Throwable t) {
System.out.println("In the handler of Throwable");
}
}
}
我期待 'In the handler of Error' 因为 AssertionError 是 Error 的子类,但它不显示任何内容并正常终止。然后检查输出我在错误处理程序之前添加了这个捕获处理程序。
catch (AssertionError t) {
System.out.println("In the handler of Throwable");
}
我知道捕获错误不是一个好习惯,但如果我们不需要捕获程序未崩溃的原因,它会正常终止吗?
默认情况下禁用断言,在使用 java
执行代码时在命令行中添加 -ea
:
java -ea Assert