Android程序崩溃 crash信息

学习Android程序崩溃现象,今天整理了一下学习笔记。

程序运行之后,出现了崩溃现象,开发者应及时获取在该设备上导致崩溃的信息,如何在程序崩溃的情况下获取相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序。

我们需要有一个全局的异常捕获器,当出现一个没有发现的异常是,捕获这个异常,并且将异常信息记录下来,上传的服务器供开发人员分析出现异常的具体原因。

首先学习两个类:android.app.Application 和ava.lang.Thread.UncaughtExceptionHandler。Application:管理应用程序的全局状态,在程序启动时application首先创建,然后根据(Intent)来启动相应的Activity和Service,我们应自定义一个加强版的Application中注册未捕获的异常处理器。

ava.lang.Thread.UncaughtExceptionHandler:线程未捕获异常处理器,用来处理没有捕获的异常。我们需要实现此接口,并注册为程序中默认未捕获异常处理。这样当未捕获异常发生时,就可以做一些个性化的异常处理操作。

如题,代码中没错误,但是每次运行到那个方法就自动退出了。这是Logcat中的error列表,谁知道是什么原因? 04-22 15:29:54.788: E/dalvikvm(3610): threadid=11: created from interp,name=Thread-3687 04-22 15:29:54.798: E/dalvikvm(3610): threadid=11: calling run(),name=Thread-3687 04-22 15:29:54.828: E/lanageTag(3610): not use 04-22 15:30:05.589: E/dalvikvm(3610): threadid=11: exiting,name=Thread-3687 04-22 15:30:30.546: E/AndroidRuntime(3610): FATAL EXCEPTION: main 04-22 15:30:30.546: E/AndroidRuntime(3610): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=3021, result=-1, data=Intent { (has extras) }} to activity {com.example.ocr_test_13/com.example.ocr_test_13.MainActivity}: java.lang.ArithmeticException: divide by zero 04-22 15:30:30.546: E/AndroidRuntime(3610): at android.app.ActivityThread.deliverResults(ActivityThread.java:3178) 04-22 15:30:30.546: E/AndroidRuntime(3610): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3221) 04-22 15:30:30.546: E/AndroidRuntime(3610): at android.app.ActivityThread.access$1100(ActivityThread.java:140) 04-22 15:30:30.546: E/AndroidRuntime(3610): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261) 04-22 15:30:30.546: E/AndroidRuntime(3610): at android.os.Handler.dispatchMessage(Handler.java:99) 04-22 15:30:30.546: E/AndroidRuntime(3610): at android.os.Looper.loop(Looper.java:137) 04-22 15:30:30.546: E/AndroidRuntime(3610): at android.app.ActivityThread.main(ActivityThread.java:4914) 04-22 15:30:30.546: E/AndroidRuntime(3610): at java.lang.reflect.Method.invokeNative(Native Method) 04-22 15:30:30.546: E/AndroidRuntime(3610): at java.lang.reflect.Method.invoke(Method.java:511) 04-22 15:30:30.546: E/AndroidRuntime(3610): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808) 04-22 15:30:30.546: E/AndroidRuntime(3610): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575) 04-22 15:30:30.546: E/AndroidRuntime(3610): at dalvik.system.NativeStart.main(Native Method) 04-22 15:30:30.546: E/AndroidRuntime(3610): Caused by: java.lang.ArithmeticException: divide by zero 04-22 15:30:30.546: E/AndroidRuntime(3610): at com.example.ocr_test_13.MainActivity.FindConnectArea(MainActivity.java:1158) 04-22 15:30:30.546: E/AndroidRuntime(3610): at com.example.ocr_test_13.MainActivity.Identify(MainActivity.java:735) 04-22 15:30:30.546: E/AndroidRuntime(3610): at com.example.ocr_test_13.MainActivity.onActivityResult(MainActivity.java:514) 04-22 15:30:30.546: E/AndroidRuntime(3610): at android.app.Activity.dispatchActivityResult(Activity.java:5276) 04-22 15:30:30.546: E/AndroidRuntime(3610): at android.app.ActivityThread.deliverResults(ActivityThread.java:3174) 04-22 15:30:30.546: E/AndroidRuntime(3610): ... 11 more 04-22 15:42:22.025: E/dalvikvm(7360): threadid=11: created from interp,name=Thread-3708 04-22 15:42:22.025: E/dalvikvm(7360): threadid=11: calling run(),name=Thread-3708 04-22 15:42:22.105: E/lanageTag(7360): not use ``` ```
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页