2
我有一個實用程序方法來定時和記錄整個項目中的各種查詢。 問題是,現在看crashlytics
現在所有不相關的崩潰都連接成一個崩潰實例。在拋出異常之前從stacktrace中刪除最後一個方法
我可以捕獲實用程序方法的所有異常,並從堆棧中移除該方法後拋出它們嗎?
環境是Android
(Java
)
UPDATE:
基於以下@ Dhananjay的答案,這裏是我的代碼:
public static Cursor get(...) {
try {
// my utility code
} catch (RuntimeException e) {
throw cleanException(e);
}
}
private static RuntimeException cleanException(RuntimeException e) {
try {
StackTraceElement[] stackTrace = e.getStackTrace();
StackTraceElement[] subTrace = new StackTraceElement[stackTrace.length - 1];
System.arraycopy(stackTrace, 1, subTrace, 0, subTrace.length);
e.setStackTrace(subTrace);
return e;
} catch (Throwable ignored) {
return e;
}
}
史詩成功!我不知道我可以setStackTrace ...我只能將自己限制爲RuntimeExceptions,以避免在任何地方都添加拋出異常。我會根據您在問題中的回答發佈我的代碼 – marmor