Android Kotlin - пойманное исключение, по-прежнему вылетает программа - PullRequest
0 голосов
/ 20 февраля 2019

код:

  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.dispatchingalLiveData.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 (OnPedalListener.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 ).jpgInputStage.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.apply (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.ViewRootImpl.deliverInputIjIl755android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:6694) в android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:6655) в android.view.ViewRootImpl $ WindowInputEventReot.IvView.jpg.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:193 на android.os.MessageQueue.nativePollOnce (собственный метод)

1 Ответ

0 голосов
/ 20 февраля 2019

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

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

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

Send a ERROR log message and log the exception.

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

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

...