当捕获到非法参数异常时,dangerousMethodHandler()会从StackTraceElement数组中打印出错误的堆栈跟踪。对于其他类型的异常,dangerousMethodHandler()会打印"Exception!"。
我目前已经解决了其他异常,但似乎无法使用StackTraceElement数组来实现我的代码。
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)
呢? - killjoy