国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
緝拿逃走的java線程異常處理UncaughtException方法
/*
* 貌似有一篇文章寫到uncaugthException()方法,這個(gè)方法是線程組類的一個(gè)很重要的方法,它用來處理線程未處理的異常。
* 其實(shí),線程捕獲異常的方式是這樣的,如果線程沒有捕獲異常,那么java虛擬機(jī)會找到相關(guān)的UncaughtExceptionHandler實(shí)例化對象,如果
* 找到了就調(diào)用uncaughtException(Thread t, Throwable e)方法,如果找不到呢,就調(diào)用線程組的異常處理器,調(diào)用線程組的
* uncaughtException方法,因?yàn)槊總€(gè)線程都屬于一個(gè)線程組,而這個(gè)線程組繼承了UncaughtExceptionHandler這個(gè)接口,所以,線程組也可以
* 用來處理線程未捕獲的異常。另一點(diǎn)需要說的是,線程本身就有兩個(gè)個(gè)設(shè)置未捕獲異常的使用方法:setDefaultUncaughtExceptionHandler和
* setUncaughtExceptionHandler方法,從字面上來理解,就是未捕獲異常處理機(jī)制,線程可以設(shè)置自己的未捕獲異常處理方式,前者是默認(rèn)處理,表示
* 類的默認(rèn)異常處理,這是一種靜態(tài)方法,而后者是一種實(shí)例方法,它表示的是設(shè)置當(dāng)前的異常處理方式。
*
*/
package com.cbh.thread_test;
*@author cbh–java編程網(wǎng),http://www.haohaoblog.com
class MyGod extends ThreadGroup//線程組
{
public MyGod()
{
super(“I’m God!”);
}
public void uncaughtException(Thread t,Throwable e)//覆蓋線程組的異常處理器方法
{
System.out.println(getName()+”抓到異常了,它來自線程:”+t.getName());
super.uncaughtException(t, e);//使用父類的異常處理器
}
}

class GodCaught implements Thread.UncaughtExceptionHandler
{//線程的未捕獲的異常處理方式
private String name;
public GodCaught(String name)
{
this.name=name;
}
public void uncaughtException(Thread t, Throwable e) {//線程異常處理器方法
System.out.println(name+”抓到異常,它從線程:”+t.getName()+”來”);
}
}
public class Thread_uncaughtException extends Thread{
public Thread_uncaughtException(ThreadGroup group,String name)
{
super(group,name);
}
public void run()
{
int i=100/0+1;//線程拋出異常的地方
}
public static void main(String[] args) {
MyGod mg=new MyGod();
UncaughtExceptionHandler ueh=new GodCaught(“默認(rèn)未捕捉線程異常處理”);
//設(shè)置異常處理方式,為默認(rèn)方式,即設(shè)置類的異常處理器。
Thread_uncaughtException.setDefaultUncaughtExceptionHandler(ueh);
Thread_uncaughtException tue1=new Thread_uncaughtException(mg,”tue1″);
Thread_uncaughtException tue2=new Thread_uncaughtException(mg,”tue2″);
UncaughtExceptionHandler cur=new GodCaught(“設(shè)置未捕捉線程異常處理”);
tue2.setUncaughtExceptionHandler(cur);//設(shè)置當(dāng)前的異常處理器
tue1.start();
tue2.start();
}
}


/**
* 整個(gè)的過程是這樣的:當(dāng)一個(gè)線程實(shí)例拋出未捕獲的異常時(shí),java虛擬機(jī)首先找到線程實(shí)例的當(dāng)前異常處理器,調(diào)用uncaughtException()方法,如果找不到,就
* 找線程所屬的線程組作為異常處理器,調(diào)用它的uncaughtException()方法,如果這個(gè)線程組有一個(gè)父類線程組,那么就調(diào)用uncaughtException方法,否則,如果
* 線程實(shí)例所屬的線程類具有默認(rèn)異常處理器,就調(diào)用這個(gè)默認(rèn)異常處理器的uncaughtException方法,否則,就把來自方法調(diào)用堆棧的異常信息打印到標(biāo)準(zhǔn)輸出流System.err中
* 當(dāng)tue2拋出異常時(shí),直接用當(dāng)前處理器cur,對于tue1拋出的異常,由于沒有設(shè)置當(dāng)前處理器,所以有所屬線程組作為異常處理器,處理完后再轉(zhuǎn)讓給所屬類Thread_uncaughtException的默認(rèn)異常處理器
* ueh進(jìn)行處理。
*/
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java UncaughtExceptionHandler 處理線程意外中止
分析源碼,學(xué)會正確使用 Java 線程池
UncaughtExceptionHandler,捕獲錯(cuò)誤
Java子線程中的異常處理
java多線程中的異常處理
Java中主線程如何捕獲子線程拋出的異常
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服