当前位置: 首页 > 知识库问答 >
问题:

Android静态编程语言-捕获异常仍然崩溃程序

徐嘉勋
2023-03-14

代码:

  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。在com.androidchekhov.looperpedal.PedalActivity$onCreate$6.invoke(pedalacitivity.kt:92)上停止(本机方法)在com.androidchekhov.looperpadal.pedal$oncrete$6.invoke(Pedalactiivity.kt:17)在com.androidchekhov.Looperpedel.ExtensionsKt$observeNonnall$1.onChanged(Extensions.kt:9)在android.arch.lifecycle.LiveData.considerNotify(LiveData.java:109)上停止android.arch.lifecycle.LiveData.dispatchingValue(LiveData.java:126)在android.arch.lifecycle.LiveData.setValue(LiveData.java:282)在android.arch.life.MutableLiveData.setValue(MutableLiveData.java:33)在com.xxx.xxx.PedalViewModel.pedalClick(PedalViewModel.kt:47)在com.androidchekhov.loopedal.pedarctivity$onCreate$11.invoke(PedalActivity.kt:137)在com.androidchekhov.looperpedal.PedalActivity$onCreate$11.invoke(pedalacitivity.kt:17)在com.andro.looperchhov.loopedpedal.OnPedalTouchListener.handleClick(onpedallitener.kt:80)在android.view.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2971)在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2971)在android.view.ViewGroup.Dispatch TouchEvent在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)的android.viewandroid.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2971)在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)在android.view.ViewGroup.DispatchedTransformedtouchEvents(ViewGroup.java:29 71)在Android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:290)在com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:448)上的android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2600)和android.app.Activity.dispatchTouchEvent(Activity.java:3312)上的com.andro.internald.policyPolicy.PhoneWindow.superDispatchTouchEventcom.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:410)在android.view.view.dispatchPointeEvent(view.java:12018)在android.view.ViewRootImpl$ViewPostImeInputStage.processPointEvent(ViewRootImpl.java:4829)在android.view.ViewRootImpl$viewPostIMInputStage.onProcess(ViewRootImpl.java:4643)在android.view.ViewRootImpl$InputStage.OnDeliverText(ViewRootImpl.java:4234)在android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4200)在android.view.ViewRootImpl$AsyncInputStage.forward在android.view.ViewRootImpl$InputStage应用(ViewRootImpl.java:4208)在android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4181)在android.view.ViewRootImpl$InputStage.OnDeliverText(ViewRootImpl.java:4234)在android.view.viewtRootImpl$InputStage.forward(ViewRootImpl.java:4200)在Android.view.viewRootInput$InputStager.apply(viewroot impl.java:4208)在android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6755)在android.view.ViewRootImp.doProcessInputEvents(ViewRootImpl.java:6694)在android.view.ViewRootImpl.enqueueInputEvent在android.view.ViewRootImpl.java:6655)在android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent事件(ViewRootInputImpl.java:6858)在android的view.InputEventReceptor.dispatchInputEvent(android.os.MessageQueue.nativePollOnce上的InputEventReceiver.java:193(本机方法)

共有1个答案

云项禹
2023-03-14

不确定我是否误解了您的问题,但以下行表示您看到的异常是由您自己的代码打印的:

<代码>日志。e(标记“无法保存层”,e)

如果您为Log. e命令提供异常,它会与您的消息一起打印(请参阅留档):

Send a ERROR log message and log the exception.

请注意,您的消息“无法保存图层”也会显示。因此,您只看到打印的堆栈跟踪,但异常被正确捕获,因此不会使应用程序崩溃。也许是后续问题导致了这次坠机。

请(1)提供应用程序的更多背景信息,( 2)检查是否有其他崩溃指标,例如,您可以分享的logcat。根据你提供的信息,我认为会有另一次崩溃,导致应用程序崩溃。

 类似资料:
  • 我想知道为什么在下面的代码中没有捕捉到异常: 函数的调用方式如下: 但我还是遇到了一个导致应用程序崩溃的异常: 我想说try/catch块会捕获异常,但唉。。。 什么原因导致异常没有被捕获?我想说线程并不重要,因为我使用try/get块来处理线程中的异常。 在Laalto的回答之后,我更新了代码,如下所示(对于那些感兴趣的人):

  • 本文向大家介绍Android application捕获崩溃异常怎么办,包括了Android application捕获崩溃异常怎么办的使用技巧和注意事项,需要的朋友参考一下 Android application捕获崩溃异常怎么办? 通用 application 1、收集所有 avtivity 用于彻底退出应用 2、捕获崩溃异常,保存错误日志,并重启应用 以上就是本文的全部内容,希望对大家的学习

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 我在表中的列上添加了唯一约束。当违反约束时,它会抛出一个我无法捕获并传达给用户的异常。 <代码>公开:事务尝试#0失败:java。sql。BatchUpdateException:Batch entry 0 INSERT INTO templates(created\u at,is\u deleted,name,sections)值('2018-10-03 16:31:25.732 05:30',

  • 一旦我从手机上的路径上传图像,我的应用程序就会崩溃。用户也成功地通过身份验证进入应用程序,我已经导入了所有需要的sdk。可能是sdk的验证不正确,因为它不是最新的验证。我跟着这个视频:https://youtu.be/86dkYGeXMaU 这是我的代码: 以下是日志猫消息:

  • 如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。