当发现非法参数异常时,危险的MethodHandler()打印来自StackTraceElement数组的错误堆栈跟踪。对于任何其他类型的异常,危险的方法处理程序()会打印“Exception!”打印堆栈跟踪元素异常
我现在已经整理出其他异常,但似乎无法实现使用StackTraceElemen阵列
public void dangerousMethod() {
Character.toChars(~0);
}
public void dangerousMethodHandler() {
try {
this.dangerousMethod();
}catch(IllegalArgumentException e){
StackTraceElement[] trace = e.getStackTrace();
e.getStackTrace();
System.err.println(trace[0].toString());
} catch (Exception e){
System.out.print("Exception!");
}
}
我的代码,当我打印出来,我得到
java.lang.Character.toChars(Character.java:4982)
我的输出应该如下是:
java\.lang\.Character\.toChars\(Character\.java:\d+\)[\s\n]+Main\.dangerousMethod\(Main\.java:\d+\)[\s\n]+Main\.dangerousMethodHandler\(Main\.java:\d+\)[\s\n]+Main\.runTests\(Main\.java:\d+\)[\s\n]+Main\.main\(Main\.java:\d+\)
为什么不使用'printStackTrace(System.err)'? – Killjoy1221
我得到这个错误,如果我尝试Main.java:11:找不到符号 symbol:方法printStackTrace(java.io.PrintStream) location:class Main printStackTrace(System.err); –
如果我去e.printStackTrace(System.err);我得到这个很接近的错误java.lang.IllegalArgumentException \ x09at java.lang.Character.toChars(Character.java:4982) \ x09at Main.dangerousMethod(Main.java:18) \ x09at Main.dangerousMethodHandler( Main.java:5) \ x09at Main.runTests(Main.java:26) \ x09at Main.main(Main.java:22) –