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作用的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: ASP入门(十一)-Session小案例
- 下一篇: 如何让div水平垂直居中
