В моем приложении служба аварийного каротажа (splunk mint) грозит большим временем. Я устанавливаю UncaughtExceptionHandler
(потому что у меня нет власти над библиотекой регистрации сбоев), чтобы я мог поймать эти сбои и предотвратить сбой приложения из-за библиотеки регистрации сбоев.Как использовать этот коллиматорный код только для того, чтобы заботиться только о одном типе аварии
Но я только хочу поймать эти конкретные аварии с помощью UncaughtExceptionHandler
и не всех аварий в приложении.
У меня есть этот код, можете ли вы рассказать мне, как я могу разрешить приложение, если какое-либо исключение, которое не содержит слов splunk.mit
, поймано?
public class MyApplication extends Application
{
public void onCreate()
{
// Setup handler for uncaught exceptions.
Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler()
{
@Override
public void uncaughtException (Thread thread, Throwable e) {
// todo check if stacktrace contains `splunk.mint`
// todo let all other crashes crash the app
handleUncaughtException (thread, e);
}
});
}
public void handleUncaughtException (Thread thread, Throwable e) {
e.printStackTrace();
// todo deal with the crash somehow
}
}
PS: Будет ли это делать трюк?
Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler()
{
@Override
public void uncaughtException (Thread thread, Throwable e){
if (!Arrays.toString(e.getStackTrace()).contains("splunk.mint")) {
throw e;
}
}
});
На самом деле я пытался проверить это, но Android Studio обыкновение компиляции, потому что нету поймал throw e
линию. Что я делаю?
PS2: Я работал над ограничением Android Studio, заменяя throw e
на throw new RuntimeException(e);
, но это правильный путь для решения моего основного вопроса?