M.J*_*nes 3 java exception stack-trace
当捕获非法参数异常时,dangerousMethodHandler() 会从 StackTraceElement 数组打印错误的堆栈跟踪。对于任何其他类型的异常,dangerousMethodHandler() 会打印“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!");
}
}
Run Code Online (Sandbox Code Playgroud)
当我打印出以下内容时我得到
java.lang.Character.toChars(Character.java:4982)
Run Code Online (Sandbox Code Playgroud)
我的输出应该是:
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+\)
Run Code Online (Sandbox Code Playgroud)
您只打印数组中的第一个 StackTraceElement。您需要迭代并打印每个内容。
for (StackTraceElement elem : trace) {
System.err.println(elem);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8109 次 |
| 最近记录: |