Я написал свое собственное исключение (MyException) и реализовал ведение журнала и отображение сообщений об ошибках в виде тостов. Вот краткость этого ...
public class MyException extends Exception {
public MyException(String msg) {
Looper.prepare();
Toast.makeText(Controller.getInstance().getApplicationContext(), msg , Toast.LENGTH_LONG).show();
//Looper.loop();
Looper.myLooper().quit();
}
}
Все было хорошо, пока я не реализовал потоки, в которых исключения генерируются и перехватываются.
Вы, наверное, уже видели, что я играл с Looper Class, но, честно говоря, я не знаю, как заставить это работать. Это правильный подход? Вы также можете видеть, что я уже храню ссылку ApplicationContext в моем контроллере. Должен ли я сделать это с ActivityContext, а затем сделать тост из этого ActivityContext? (Но я слышал, что это не очень хорошая практика с точки зрения производительности)
Обновление
Это тот путь, по которому я должен идти, когда исключение ловится в потоке в активности?
private Runnable exceptionCatchingThread = new Runnable() {
@Override
public void run() {
try {
throw new Exception();
} catch (Exception e) {
this.e = e;
runOnUiThread(handleThreadExceptions); }
}
}
private Runnable handleThreadExceptions = new Runnable() {
@Override
public void run() {
//Show toast or call the general ExceptionHandler,
//which is doing logging and stuff
Helper.handleException(e);
}
}