最近在写java程序时思考到一个问题,在java web程序运行的过程中任何线程(包括主线程)抛出异常后,只要有其他线程还在运行,虚拟机不会关闭,进程也不会结束,而在Android中则会导致系统崩溃,进程结束,然后弹出应用停止运行对话框、再次打开等。原因是Thread的线程异常处理器,jdk中没有为java程序设置默认的处理器,而Android框架中设置了默认的线程异常处理器,如果没有在线程中调用setDefaultUncaughtExceptionHandler设置了就会覆盖所有线程的异常处理,比如常用的CrashHandler,Bugly等崩溃日志记录框架都是基于此机制实现异常事件的处理。
代码效果图:
![](https://img.haomeiwen.com/i3910133/39c187ee4079ac4a.png)
![](https://img.haomeiwen.com/i3910133/780bae6df530d8de.png)
网友评论