Thread.setDefaultUncaughtExceptionHandler作用
刚刚看到ResourceManager源码第一行,就遇到了比较陌生的用法,特意研究一下,如何使用?
看源码的目标不就是学习,更好的来完善自己的代码,而不是面试时候的谈资。
下面是一个自己写的demo,setDefaultUncaughtExceptionHandler作用相当于一个全局的catch。一般情况下用于记录当程序发生你未捕获的异常的时候,调用一个你默认的handler来进行某些操作,比如记录客户端版本,异常信息,等客户信息,方便收集异常原因。
通常来讲,会针对,某段代码做try … catch 没有catch到的代码,发生异常的时候,就会由setDefaultUncaughtExceptionHandler来处理。
package com.yanbit.source.study;
import java.lang.Thread.UncaughtExceptionHandler;
/**
* @author yanbit
*
*/
public class GlobExceptionHandler {
public static void main(String[] args) {
Thread t = new Thread(new AdminThread());
t.setDefaultUncaughtExceptionHandler(new ExceptionHandler()); //对当前线程设置默认catch
t.start();
}
}
class AdminThread implements Runnable {
@Override
public void run() {
try {
Thread.sleep(2000);
System.out.println("start ... Exception");
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
throw new NullPointerException(); //直接exception
}
}
class ExceptionHandler implements UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) { //调用此方法来进行,对异常处理,需要实现UncaughtExceptionHandler 接口
System.out.println("Thread:" + t + " Exception message:" + e);
}
}
太赞了,又从开源项目学到一些东西。over
转载于:https://www.cnblogs.com/yanbit/p/4738774.html
Thread.setDefaultUncaughtExceptionHandler作用相关推荐
- Thread源码-----传实现了Runnable接口的类的实例给Thread的作用
传送门:https://wangchangchung.github.io/2016/12/05/Java常用类源码--Thread源码解析/ 1. thread的构造函数有: public Threa ...
- C# Thread IsBackground作用
背景 之前在做一个定时下载任务的时候,使用的是一个主线程在执行任务:后面需求调整了,需要在启用一个子线程执行优先级更高的单独通道下载.于是下意识的这么做 new Thread //创建后台线程Thre ...
- JAVA Thread线程异常监控
一.场景描述:单线程程序可以用try...catch捕获程序的异常,而在多线程程序的时候是无法使用try...catch捕获. 示例1:多线程发生异常,无法使用try...catch捕获问题 publ ...
- W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x419b4c50)
今天编程时候遇到一个问题: W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x419b4c50) .. ...
- android线程作用,Android线程介绍
进程与线程 进程:是操作系统的基础:是一次程序的执行:是一个程序及数据在处理机上顺序执行时所发生的活动:是程序在一个数据集合运动的过程:它是系统进行资源分配的一个独立单位. 线程:线程可以理解成是在进 ...
- C++/C# Thread多线程总结
1.背景 一直都想写一篇关于多线程的文章,总结一下这方面的知识,也为自己和有需要的人提供参考,不再赘述,开始吧, 现在计算机一般都是多核的,4核和8核的比较多件,用于线上计算或专用工作的计算机更是大概 ...
- java异常类型和基本处理原则_Java异常控制机制和异常处理原则
Java异常控制机制又被称为"违例控制机制". 捕获程序错误最理想的时机是在编译阶段,这样可以彻底避免错误的代码运行.但并非所有的错误都能在编译期间侦测到,有些问题必须在运行期间解 ...
- 【转载】Java异常控制机制和异常处理原则
转载自Java异常控制机制和异常处理原则 Java异常控制机制又被称为"违例控制机制". 捕获程序错误最理想的时机是在编译阶段,这样可以彻底避免错误的代码运行.但并非所有的错误都能 ...
- android 中处理崩溃异常并重启程序
转:http://blog.csdn.net/cym_lmy/article/details/24704089 有时候由于测试不充分或者程序潜在的问题而导致程序异常崩溃,这个是令人无法接受的,在and ...
最新文章
- Thymeleaf——使用模板动态生成JavaScript脚本文件
- C中静态存储区和动态存储区
- el-drawer点击的时候为什么有边框_剪映教学之视频拍摄加剪辑【一】:出视频上下黑色边框模糊效果,视频广告配音...
- 中国女排代言作业帮直播课,作业帮累计用户已超8亿
- Python的安装(源码编译安装,IDE安装)
- 预训练新范式!为什么Prompt会更有效?
- 基于Visual Studio2012实现Windows8的metro界面笔迹手写识别文档
- zz backgroundworker C#
- 功能表单之评星、进度条、颜色选择器的使用——JEPLUS软件快速开发平台
- Linux中如何调整pe的大小,关于LVM PE大小影响VG容量
- 12 个学习新的编程语言的方法
- 图解机器学习算法(10) | XGBoost模型最全解析(机器学习通关指南·完结)
- QuickTime Component实例
- POE指针式时钟系统自动追时精准校时
- bootloader 详细介绍
- Vue实例化对象挂载到元素上的方法
- body 没有被撑开_flex布局被子元素撑开如何保持内容不超出容器的方法
- excel中添加有效性验证或数据验证时不选择第一行列标题的解决方法
- Unity全面的面试题(包含答案)
- 使用OpenCV实现一个文档自动扫描仪