久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

java多線程中的異常處理

 KentProgram 2014-06-10

在java多線程程序中,,所有線程都不允許拋出未捕獲的checked exception,也就是說各個線程需要自己把自己的checked exception處理掉,。這一點是通過java.lang.Runnable.run()方法聲明(因為此方法聲明上沒有throw exception部分)進行了約束,。但是線程依然有可能拋出unchecked exception,當(dāng)此類異常跑拋出時,,線程就會終結(jié),,而對于主線程和其他線程完全不受影響,,且完全感知不到某個線程拋出的異常(也是說完全無法catch到這個異常),。JVM的這種設(shè)計源自于這樣一種理念:“線程是獨立執(zhí)行的代碼片斷,線程的問題應(yīng)該由線程自己來解決,,而不要委托到外部,。”基于這樣的設(shè)計理念,,在Java中,,線程方法的異常(無論是checked還是unchecked exception),都應(yīng)該在線程代碼邊界之內(nèi)(run方法內(nèi))進行try catch并處理掉.


但如果線程確實沒有自己try catch某個unchecked exception,,而我們又想在線程代碼邊界之外(run方法之外)來捕獲和處理這個異常的話,,java為我們提供了一種線程內(nèi)發(fā)生異常時能夠在線程代碼邊界之外處理異常的回調(diào)機制,即Thread對象提供的setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)方法,。

通過該方法給某個thread設(shè)置一個UncaughtExceptionHandler,,可以確保在該線程出現(xiàn)異常時能通過回調(diào)UncaughtExceptionHandler接口的public void uncaughtException(Thread t, Throwable e) 方法來處理異常,這樣的好處或者說目的是可以在線程代碼邊界之外(Thread的run()方法之外),,有一個地方能處理未捕獲異常,。但是要特別明確的是:雖然是在回調(diào)方法中處理異常,但這個回調(diào)方法在執(zhí)行時依然還在拋出異常的這個線程中,!另外還要特別說明一點:如果線程是通過線程池創(chuàng)建,,線程異常發(fā)生時UncaughtExceptionHandler接口不一定會立即回調(diào)。


比之上述方法,,還有一種編程上的處理方式可以借鑒,,即,,有時候主線程的調(diào)用方可能只是想知道子線程執(zhí)行過程中發(fā)生過哪些異常,而不一定會處理或是立即處理,,那么發(fā)起子線程的方法可以把子線程拋出的異常實例收集起來作為一個Exception的List返回給調(diào)用方,,由調(diào)用方來根據(jù)異常情況決定如何應(yīng)對。不過要特別注意的是,,此時子線程早以終結(jié),。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多