Android Kotlin - пойманное исключение, по-прежнему вылетает программа

1

код:

  viewModel.saveLayer.observeNonNull(this) {
        Log.i(TAG, "save layer")
        try {
            // starting to record takes longer than stopping. so, if timed right, a recorder could be stopped
            // before started.
            with(mediaRecorder) {
                stop()
                reset()
            }
            sharedPrefs.updateNumSavedLayers(it)
            viewModel.updateNumSavedLayers(it)
        } catch(e: Exception) {
            Log.e(TAG,"could not save layer", e)
        }
    }

Авария все еще брошена. Увидеть ниже:

2019-02-20 19: 45: 22.514 22435-22435/com.xxx.xxx E/PedalApp: не удалось сохранить слой java.lang.RuntimeException: остановить не удалось. на android.media.MediaRecorder.stop (собственный метод) на com.androidchekhov.looperpedal.PedalActivity $ onCreate $ 6.invoke(PedalActivity.kt: 92) на com.androidchekhov.looperpedal.PedalActivity $ onCreate $ 6.invoke(PedalActivity.Active: 17) на com.androidchekhov.looperpedal.ExtensionsKt $ наблюдатьNonNull $ 1.onChanged(Extensions.kt: 9) на android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109) на android.arch.lifecycle.LiveData.dispatchingal LiveData.java:126) на android.arch.lifecycle.LiveData.setValue(LiveData.java:282) на android.arch.lifecycle.MutableLiveData.setValue(MutableLiveData.java:33) на com.xxx.xxx.PedalViewModel.pedalClick(PedalViewModel.kt: 47) на com.androidchekhov.looperpedal.PedalActivity $ onCreate $ 11.invoke(PedalActivity.kt: 137) на com.androidchekhov.looperpedal.PedalActivity $ onCreate $ 11.invoke(PedalActivity.kt: 17) на ком. androidchekhov.looperpedal.OnPedalTouchListener.handleClick(OnPedalListener.kt: 80) в com.androidchekhov.looperpedal.OnPedalTouchListener.onTouch(OnPedalListe ner.kt: 41) в android.view.View.dispatchTouchEvent(View.java:11775) в android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2971) в android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600 ) в android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2971) в android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) в android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2971).ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) в android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2971) в android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) в android.view.TatchEvent(Android.view.Tatch для Ивента. ViewGroup.java:2971) в android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600) в android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2971) в android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java) ) в com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView .java: 448) в com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1834) в android.app.Activity.dispatchTouchEvent(Activity.java:3312) в android.support.v7.view.WindowCallbackWrapper. dispatchTouchEvent (WindowCallbackWrapper.java:69) в com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:410) в android.view.View.dispatchPointerEvent(View.java:12018) в android.view.ViewRoostImpl $.processPointerEvent(ViewRootImpl.java:4829) в android.view.ViewRootImpl $ ViewPostImeInputStage.onProcess(ViewRootImpl.java:4643) в android.view.ViewRootImpl $ InputStage.deliver(ViewRootImplj.jpg.jp.jpg).jpg InputStage.onDeliverToNext(ViewRootImpl.java:4234) в android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:4200) в android.view.ViewRootImpl $ AsyncInputStage.forward(ViewRootImplmp.j.w4). ViewView.mp.jpg.jpg.jpg.jpg $ InputStage.apply(ViewRootImpl.java:4208) в android.view.ViewRootImpl $ AsyncInputStage.ap ply (ViewRootImpl.java:4384) в android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:4181) в android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.joidS.view.34 at.: 34).forward(ViewRootImpl.java:4200) в android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:4208) в android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:4181) в android.view.oot.view deliveryInputEvent (ViewRootImpl.java:6755) в android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6694) в android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:Impl.ViewEvent.RoView.Omp.EvOntEvRoTeOntEvOntEvOntEvOntOntOntOntOntOntOvRoTeOntVeRoTeOntVeOntRoTeOntRoTeOntVeRoToToToToToToToToToToToToToToToToToToToToToV).java: 6858) в android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:193 в android.os.MessageQueue.nativePollOnce (собственный метод)

Теги:
exception
mediarecorder
failed-installation

1 ответ

1
Лучший ответ

не уверен, что я неправильно понял вашу проблему, но следующая строка указывает, что исключение, которое вы видите, напечатано вашим собственным кодом:

Log.e(TAG,"could not save layer", e)

Если вы предоставите исключение для команды Log.e, оно будет напечатано вместе с вашим сообщением (см. Документацию):

Send a ERROR log message and log the exception.

Обратите внимание, что ваше сообщение "Не удалось сохранить слой" также отображается. Таким образом, вы просто видите отпечатанную трассировку стека, но исключение правильно перехвачено и, следовательно, не приводит к сбою приложения. Возможно последующие проблемы ответственны за катастрофу.

Пожалуйста (1) предоставьте больше контекста в приложении и (2) проверьте, есть ли другие индикаторы сбоя, например, logcat, которыми вы можете поделиться. Основываясь на предоставленной вами информации, я предполагаю, что произошел еще один сбой, который фактически разрушает приложение.

  • 1
    Вы правы. Был еще один сбой. Я фильтровал журналы на основе TAG и не видел его. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню