當發現非法參數異常時,危險的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) –