Intereting Posts
Как передать предварительный просмотр камеры на поверхность, созданный MediaCodec.createInputSurface ()? Android Studio: не удалось создать MD5 HashFile Как заставить просмотр recycler начинать добавлять элементы из центра? Преобразование строки Android и преобразование html-объектов Автоматизация Android APK с эспрессо HideSoftInputFromWindow не работает? Android прокрутки вверх скрыть вид и прокрутить вниз показать эффект вида, как твиттер Лучшая практика для постоянного уведомления о местоположении пользователя Как вы можете отображать перевернутый текст с текстовым просмотром в Android? Создание полноэкранного пользовательского Toast PhoneGap – Как вернуться, когда нажата кнопка «Условия использования Google Карт»? Создание плавного угасания изображения в андроиде Смещение обоев для уровня API 3? Как оживить ширину и высоту макета? Как я могу (и привязывать) удаленный сервис в android, который реализован в другом приложении (другой пакет)?

Retrow UncaughtExceptionHandler Исключение после ведения журнала

В моем классе приложения я пытаюсь закрыть силу до того, как это произойдет, поэтому я могу ее зарегистрировать, а затем перестроить, чтобы андроид мог ее обработать. Я делаю это, так как некоторые пользователи не сообщают о закрытии силы.

Я развиваюсь в eclipse, и затмение не позволяет мне перестроить исключение. В нем показана ошибка: «Необработанный тип исключения Throwable: Surround с try / catch». Как я могу отменить исключение?

public class MainApplication extends Application { @Override public void onCreate() { super.onCreate(); try { //Log exception before app force closes Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { AnalyticsUtils.getInstance(MainApplication.this).trackEvent( "Errors", // Category "MainActivity", // Action "Force Close: "+ex.toString(), // Label 0); // Value AnalyticsUtils.getInstance(MainApplication.this).dispatch(); Toast.makeText(MainApplication.this, "Snap! Something broke. Please report the Force Close so I can fix it.", Toast.LENGTH_LONG); //rethrow the Exception so user can report it //throw ex; //<-- **eclipse is showing an error to surround with try/catch** } }); } catch (Exception e) { e.printStackTrace(); } } 

}

Solutions Collecting From Web of "Retrow UncaughtExceptionHandler Исключение после ведения журнала"

Извинения, а не эксперт по Android – но похоже, что вы не можете выбросить ex, потому что ваша подпись метода «void uncaughtException (Thread, Throwable)» не объявляет, что она «бросает» что-либо.

Предполагая, что вы переопределяете интерфейс API и (а) не можете изменить эту подпись и (б) не хотите, потому что вы выбрасываете ее из контекста, можете ли вы вместо этого использовать шаблон декоратора и в основном подкласс по умолчанию Внедрение UncaughtExceptionHandler для регистрации вашего сообщения, а затем позволяет продолжить обработку как обычно?

Изменить: непроверено, но это может выглядеть примерно так:

  final UncaughtExceptionHandler subclass = Thread.currentThread().getUncaughtExceptionHandler(); Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { // your code AnalyticsUtils.getInstance(MainApplication.this).trackEvent( "Errors", // Category "MainActivity", // Action "Force Close: "+ex.toString(), // Label 0); // Value AnalyticsUtils.getInstance(MainApplication.this).dispatch(); Toast.makeText(MainApplication.this, "Snap! Something broke. Please report the Force Close so I can fix it.", Toast.LENGTH_LONG).show(); // carry on with prior flow subclass.uncaughtException(thread, ex); } }); 

Я не совсем уверен, что это то, что вы хотите, однако вы можете добавить предложение finally , которое будет запускаться после успешной try или обработанного catch :

 try { //your code } catch (Exception e) { //print stack trace } finally { //Log } 

Я думаю, что следующий код должен работать. Выполнение кода обработчика с использованием нового потока позволяет приложению показывать предупреждения / тосты и выполнять другие операции.

Кроме того, вы можете попробовать вызвать System.exit(0) непосредственно перед run() . Это возобновляет последнее действие.

Я проверил это как на Ginger Bread, так и на Jelly Bean .

 final UncaughtExceptionHandler subclass = Thread.currentThread().getUncaughtExceptionHandler(); Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { new Thread() { @Override public void run() { Looper.prepare(); // your code AnalyticsUtils.getInstance(MainApplication.this).trackEvent( "Errors", // Category "MainActivity", // Action "Force Close: "+ex.toString(), // Label 0); // Value AnalyticsUtils.getInstance(MainApplication.this).dispatch(); Toast.makeText(MainApplication.this, "Snap! Something broke. Please report the Force Close so I can fix it.", Toast.LENGTH_LONG); Looper.loop(); } }.start(); } });