Java異常--常見方法--自定義異常--增強(qiáng)try(try-with-resources)詳解
異常方法
//返回此可拋出對(duì)象的詳細(xì)信息消息字符串 public String getMessage() //將此可拋發(fā)對(duì)象及其回溯到標(biāo)準(zhǔn)錯(cuò)誤流。此方法在錯(cuò)誤輸出流上打印此 Throwable 對(duì)象的堆棧跟蹤 //最為詳細(xì) public void printStackTrace() //返回此可拋件的簡(jiǎn)短說明 public String toString()
對(duì)于1/0這個(gè)異常
try{ int i = 1/0; } catch(Exception e){ System.out.println("e = " + e); System.out.println("-----------------"); System.out.println("e.getMessage() = " + e.getMessage()); System.out.println("-----------------"); System.out.println("e.getStackTrace() = " + Arrays.toString(e.getStackTrace())); System.out.println("-----------------"); System.out.println("e.getLocalizedMessage() = " + e.getLocalizedMessage()); System.out.println("-----------------"); System.out.println("e.getCause() = " + e.getCause()); System.out.println("-----------------"); System.out.println("e.getClass() = " + e.getClass()); System.out.println("-----------------"); System.out.println("e.getSuppressed() = " + Arrays.toString(e.getSuppressed())); }
e = java.lang.ArithmeticException: / by zero ----------------- e.getMessage() = / by zero ----------------- e.getStackTrace() = [省略27行,com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)] ----------------- //可能的原因 e.getCause() = null ----------------- //一個(gè)數(shù)組,其中包含為傳遞此異常而禁止顯示的所有異常。 //就是用try捕獲卻不做事的 e.getSuppressed() = []
自定義異常
作用
讓控制臺(tái)的報(bào)錯(cuò)信息更加的見名知意
定義
1.定義異常類,寫繼承關(guān)系。
名字要見名知義,繼承于異常類。
像運(yùn)行時(shí)可以繼承RuntimeException
在開發(fā)過程中一般會(huì)有多種異常類,小的會(huì)繼承自定義的大的。
2.寫構(gòu)造方法
需要書寫空參和帶參的構(gòu)造。
可以調(diào)用父類的也可以自定義
增強(qiáng)try(try-with-resources)
作用
簡(jiǎn)化釋放資源的步驟
條件
自動(dòng)釋放的類需要實(shí)現(xiàn)autocloseable的接口
這樣在特定情況下會(huì)自動(dòng)釋放,還有的就是stream流中提到過。
jdk7
try(創(chuàng)建對(duì)象資源1;創(chuàng)建對(duì)象資源2){ }catch(){ }
例如這樣的代碼可以改寫成
BufferedInputStream b = null; try { b = new BufferedInputStream(new FileInputStream("")); }catch (Exception e) { e.printStackTrace(); }finally { if (b!=null) { try { b.close(); } catch (IOException e) { throw new RuntimeException(e); } } }
try (BufferedInputStream b = new BufferedInputStream(new FileInputStream(""));){ }catch (Exception e) { e.printStackTrace(); }
jdk9
創(chuàng)建對(duì)象1 創(chuàng)建對(duì)象2 try(變量名1;變量名2){ }catch(){ }
上面的代碼可以改寫成,
不過需要注意的是創(chuàng)建對(duì)象也需要異常處理,我們這里選擇拋出
public void testTryWithResource() throws FileNotFoundException { BufferedInputStream b = new BufferedInputStream(new FileInputStream("")); try (b) { } catch (Exception e) { e.printStackTrace(); } }
到此這篇關(guān)于java-異常--常見方法--自定義異常--增強(qiáng)try(try-with-resources)的文章就介紹到這了,更多相關(guān)java自定義異常內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
RabbitMq消息防丟失功能實(shí)現(xiàn)方式講解
這篇文章主要介紹了RabbitMq消息防丟失功能實(shí)現(xiàn),RabbitMQ中,消息丟失可以簡(jiǎn)單的分為兩種:客戶端丟失和服務(wù)端丟失。針對(duì)這兩種消息丟失,RabbitMQ都給出了相應(yīng)的解決方案2023-01-01簡(jiǎn)單實(shí)現(xiàn)java數(shù)獨(dú)游戲
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)java數(shù)獨(dú)游戲,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12mybatis設(shè)置sql執(zhí)行時(shí)間超時(shí)時(shí)間的方法
本文主要介紹了mybatis設(shè)置sql執(zhí)行時(shí)間超時(shí)時(shí)間的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Java if(boolean)和if(boolean=true)區(qū)別解析
這篇文章主要介紹了Java if(boolean)和if(boolean=true)區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02springboot整合nacos,如何讀取nacos配置文件
這篇文章主要介紹了springboot整合nacos,如何讀取nacos配置文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11SpringCloudAlibaba Nacos開啟鑒權(quán)解決跳過登錄頁(yè)面問題
對(duì)于Nacos,如果需要開啟權(quán)限控制,可以在 Nacos 控制臺(tái)上進(jìn)行配置,本文主要介紹了SpringCloudAlibaba Nacos開啟鑒權(quán)解決跳過登錄頁(yè)面問題,感興趣的可以了解一下2023-10-10