Java經(jīng)驗(yàn)點(diǎn)滴:處理沒有被捕獲的異常
在我們的程序中并不是所有的異常都被捕獲,有些是因?yàn)槲覀儾幌氩东@,因?yàn)槲覀冋J(rèn)為那些異常沒必要捕獲
而有些是我們無法捕獲的,因?yàn)槲覀儾荒艽_定它們會(huì)在什么地方出現(xiàn),例如像NullPointerException,ClassCastException,IndexOutOfBoundsException這些RuntimeException。我們也許可以在所有它們有可能發(fā)生的地方去捕獲它們,但這確實(shí)是很壞的解決方案。但在有些情況下,我們又必須在一些未捕獲的異常發(fā)生時(shí)做一些事情,像釋放資源、讓程序離開錯(cuò)誤狀態(tài)等等。
這里通過ThreadGroup提供的一個(gè)方法,解決了這個(gè)問題,讓我們的程序可以變得更健壯。ThreadGroup提供一個(gè)uncaughtException回調(diào)方法,當(dāng)線程組中的線程有未被捕獲的異常發(fā)生時(shí),JVM就會(huì)去調(diào)用這個(gè)方法。
public class ApplicationLoader extends ThreadGroup { private ApplicationLoader() { super("ApplicationLoader"); } public static void main(String args[]) { Runnable addStarter = new Runnable() { public void run() { //在這里調(diào)用我們自己的程序的入口函數(shù) //MyApplication.main(args); } }; //把我們自己的程序當(dāng)作這個(gè)線程組的一個(gè)線程來運(yùn)行 new Thread(new ApplicationLoader(), addStarter).start(); } |
/*當(dāng)有未被捕獲的異常發(fā)生導(dǎo)致線程停止時(shí),這個(gè)方法就會(huì)被虛擬機(jī)調(diào)用,我們只要在自己的ThreadGroup子類中override這個(gè)方法,在其中對(duì)異常進(jìn)行相應(yīng)的處理*/
public void uncaughtException(Thread threadf, Throwable e) { //Handle the Exception } } |
相關(guān)文章
Java實(shí)現(xiàn)生成Excel樹形表頭完整代碼示例
這篇文章主要介紹了Java實(shí)現(xiàn)生成Excel樹形表頭完整代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12SpringBoot org.springframework.beans.factory.Unsatisfie
本文主要介紹了SpringBoot org.springframework.beans.factory.UnsatisfiedDependencyException依賴注入異常,文中通過示例代碼介紹的很詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02java的url方式、本地方式獲取json文件內(nèi)容
這篇文章給大家分享了java的url方式、本地方式獲取json文件內(nèi)容的實(shí)例代碼,有需要的朋友參考學(xué)習(xí)下。2018-07-07基于SpringBoot生成二維碼的幾種實(shí)現(xiàn)方式
本文將基于Spring Boot介紹兩種生成二維碼的實(shí)現(xiàn)方式,一種是基于Google開發(fā)工具包,另一種是基于Hutool來實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2022-03-03Java實(shí)現(xiàn)將word轉(zhuǎn)換為html的方法示例【doc與docx格式】
這篇文章主要介紹了Java實(shí)現(xiàn)將word轉(zhuǎn)換為html的方法,結(jié)合實(shí)例形式分析了java針對(duì)doc與docx格式文件的相關(guān)轉(zhuǎn)換操作技巧,需要的朋友可以參考下2019-03-03Java使用easypoi快速導(dǎo)入導(dǎo)出的實(shí)現(xiàn)
這篇文章主要介紹了實(shí)現(xiàn)Java使用easypoi快速導(dǎo)入導(dǎo)出的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03java開發(fā)SpringBoot參數(shù)校驗(yàn)過程示例教程
這篇文章主要為大家介紹了SpringBoot如何進(jìn)行參數(shù)校驗(yàn)的過程示例詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10JVM的垃圾回收機(jī)制詳解和調(diào)優(yōu)
JVM的垃圾回收機(jī)制詳解和調(diào)優(yōu)...2006-12-12java利用反射實(shí)現(xiàn)動(dòng)態(tài)代理示例
這篇文章主要介紹了java利用反射實(shí)現(xiàn)動(dòng)態(tài)代理示例,需要的朋友可以參考下2014-04-04