我们经常碰到线程突然死掉,但是又找不到原因,总不能在每个线程的run方法中都加上Try Catch吧, 况且对第三方框架内启的线程你想加Try catch还加不了呢? 怎么办?
现在有一个现成的办法,就是给每个线程"加个"默认的Try Catch, 任意一个线程出现没有捕获住的异常都执行我们自定义的那段代码。Thread中提供一个 setDefaultUncaughtExceptionHandler 的静态方法,给我们提供了这种可能。
代码贴出来如下:
class ExceptionHandler implements UncaughtExceptionHandler{
private final Logger logger = Logger.getLogger("Exception");
ExceptionHandler(){
FileHandler myFileHandler;
try {
myFileHandler = new FileHandler ("D:\\Logger.log");
SimpleFormatter formatter = new SimpleFormatter();
logger.addHandler(myFileHandler);
myFileHandler.setFormatter(formatter);
} catch (SecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void uncaughtException(Thread t, Throwable e) {
logger.log(Level.ALL, "UncaughtException Thread ");
}
}
UncaughtExceptionHandler handle=new ExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(handle);
在程序启动的时候加入这一段。这样任何线程中,只有有没有被捕获的异常,都会执行我自定义的Handle的uncaughtException方法,把这个异常打印出来。
分享到:
相关推荐
主线程如何捕获子线程的异常---马克-to-win java视频的介绍
一个线程捕获另外一个线程的异常1---马克-to-win java视频
Visual C++源代码 23 如何使用主线程异常捕获错误Visual C++源代码 23 如何使用主线程异常捕获错误Visual C++源代码 23 如何使用主线程异常捕获错误Visual C++源代码 23 如何使用主线程异常捕获错误Visual C++源代码...
C# 捕获C/C++异常的例子
UI界面多线程简单实现和线程捕获异常问题,博客的最终代码,博客才写了个初稿,还没完全修改好。
解决dubbo接口自定义异常的捕捉问题,dubbo消费者可以捕捉到提供者所抛出的自定义异常。
android在产品上线以后为了能够实时捕获异常,需要写一个异常捕获的类,这个类在你遇到异常的时候会执行uncaughtException这个方法,然后你就可以对异常进行一些操作。
Spring中,使用切面全局捕获异常的同时,进行自定义异常抛出捕获,方便代码书写。
支持易语言程序代码自设SEH捕获异常
WPF全局异常捕获Demo,防止程序运行过程中出现异常崩溃
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉,通过此篇文章给大家分享Java多线程之多线程异常捕捉,需要的朋友可以参考下
一个线程捕获另外一个线程的异常2---马克-to-win java视频
捕获异常消息后输出这个消息,可避免APP强制退出,抛出NullPointException玩玩哈,捕获全局异常是因为有的异常我们捕获不到,捕获时我们采用同步方法,以免单例多线程环境下出现异常,初始化,把当前对象设置成...
自己编写异常类型 ,自定义错误异常进行全局捕捉。实现项目全局的拦截定义输出。。。
WinForm捕获未处理的异常
在AppDomain捕获异常并处理的例子,详见blog.csdn.net/fuadam/
本代码演示了捕获数学函数异常的基本方法。
springboot全局捕获异常springboot全局捕获异常springboot全局捕获异常
本资源文件是利用SpringMVC面向切面实现的一套捕获全局异常插入数据库的代码,刚开始想实现HandlerExceptionResolver,但是不知道为什么不起作用,又自己重新写了一套。
在程序开发过程中,主要是捕获Release版异常,并打印出异常的地址,出错行,出错代码,等,哦,好像少不错了个其它异常了,如果需要再给我留言吧