刚刚看到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作用相关推荐

  1. Thread源码-----传实现了Runnable接口的类的实例给Thread的作用

    传送门:https://wangchangchung.github.io/2016/12/05/Java常用类源码--Thread源码解析/ 1. thread的构造函数有: public Threa ...

  2. C# Thread IsBackground作用

    背景 之前在做一个定时下载任务的时候,使用的是一个主线程在执行任务:后面需求调整了,需要在启用一个子线程执行优先级更高的单独通道下载.于是下意识的这么做 new Thread //创建后台线程Thre ...

  3. JAVA Thread线程异常监控

    一.场景描述:单线程程序可以用try...catch捕获程序的异常,而在多线程程序的时候是无法使用try...catch捕获. 示例1:多线程发生异常,无法使用try...catch捕获问题 publ ...

  4. W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x419b4c50)

    今天编程时候遇到一个问题:  W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x419b4c50)  .. ...

  5. android线程作用,Android线程介绍

    进程与线程 进程:是操作系统的基础:是一次程序的执行:是一个程序及数据在处理机上顺序执行时所发生的活动:是程序在一个数据集合运动的过程:它是系统进行资源分配的一个独立单位. 线程:线程可以理解成是在进 ...

  6. C++/C# Thread多线程总结

    1.背景 一直都想写一篇关于多线程的文章,总结一下这方面的知识,也为自己和有需要的人提供参考,不再赘述,开始吧, 现在计算机一般都是多核的,4核和8核的比较多件,用于线上计算或专用工作的计算机更是大概 ...

  7. java异常类型和基本处理原则_Java异常控制机制和异常处理原则

    Java异常控制机制又被称为"违例控制机制". 捕获程序错误最理想的时机是在编译阶段,这样可以彻底避免错误的代码运行.但并非所有的错误都能在编译期间侦测到,有些问题必须在运行期间解 ...

  8. 【转载】Java异常控制机制和异常处理原则

    转载自Java异常控制机制和异常处理原则 Java异常控制机制又被称为"违例控制机制". 捕获程序错误最理想的时机是在编译阶段,这样可以彻底避免错误的代码运行.但并非所有的错误都能 ...

  9. android 中处理崩溃异常并重启程序

    转:http://blog.csdn.net/cym_lmy/article/details/24704089 有时候由于测试不充分或者程序潜在的问题而导致程序异常崩溃,这个是令人无法接受的,在and ...

最新文章

  1. Thymeleaf——使用模板动态生成JavaScript脚本文件
  2. C中静态存储区和动态存储区
  3. el-drawer点击的时候为什么有边框_剪映教学之视频拍摄加剪辑【一】:出视频上下黑色边框模糊效果,视频广告配音...
  4. 中国女排代言作业帮直播课,作业帮累计用户已超8亿
  5. Python的安装(源码编译安装,IDE安装)
  6. 预训练新范式!为什么Prompt会更有效?
  7. 基于Visual Studio2012实现Windows8的metro界面笔迹手写识别文档
  8. zz backgroundworker C#
  9. 功能表单之评星、进度条、颜色选择器的使用——JEPLUS软件快速开发平台
  10. Linux中如何调整pe的大小,关于LVM PE大小影响VG容量
  11. 12 个学习新的编程语言的方法
  12. 图解机器学习算法(10) | XGBoost模型最全解析(机器学习通关指南·完结)
  13. QuickTime Component实例
  14. POE指针式时钟系统自动追时精准校时
  15. bootloader 详细介绍
  16. Vue实例化对象挂载到元素上的方法
  17. body 没有被撑开_flex布局被子元素撑开如何保持内容不超出容器的方法
  18. excel中添加有效性验证或数据验证时不选择第一行列标题的解决方法
  19. Unity全面的面试题(包含答案)
  20. 使用OpenCV实现一个文档自动扫描仪

热门文章

  1. 一篇来自前端同学对后端接口的吐槽:痛!
  2. 又臭又长!流着泪我也要把它给改完!
  3. 死磕单点登录的实现原理
  4. 一条简单的 SQL 执行超过1000ms,纳尼?
  5. 详解 Java 中 4 种 I/O 模型
  6. Nginx基础——Rewrite规则
  7. 多线程:Vector是线程安全的吗
  8. 【Scratch】青少年蓝桥杯_每日一题_8.09_列表
  9. 属兔的人今日运势-360星座网_【生肖运势】12月17日
  10. python的窗口处理模块_Python tkinter模块弹出窗口及传值回到主窗口操作详解