 · 點(diǎn)2 異常)
異常學(xué)習(xí)學(xué)習(xí)計(jì)劃Java SE 基礎(chǔ) · 點(diǎn)2 異常一、總結(jié)本文通過(guò)自定義受檢異常與非受檢異常的小練習(xí)記錄 Java 異常繼承體系中最基礎(chǔ)的兩種分類(lèi)以及super構(gòu)造器調(diào)用、final字段初始化、toString()與getCause()信息獲取等要點(diǎn)。受檢異常對(duì)可能出現(xiàn)的異常給出應(yīng)對(duì)方案進(jìn)行兜底。非受檢異常優(yōu)化代碼內(nèi)部邏輯減少業(yè)務(wù)流程中出現(xiàn)的異常。final修飾聲明字段時(shí)該類(lèi)中所有構(gòu)造器必須對(duì)其初始化。System.out.println(e)調(diào)用的是Throwable.toString()其格式通常為類(lèi)名: 消息。它默認(rèn)不包含 Cause 信息默認(rèn)只會(huì)打印消息這時(shí)需要通過(guò)e.getXX()方法來(lái)獲取對(duì)應(yīng)信息內(nèi)容。二、代碼1. MyCheckedException.java —— 受檢異常繼承 ExceptionpublicclassMyCheckedExceptionextendsException{publicMyCheckedException(Stringmessage,Throwablecause){super(message,cause);}}2. MyUncheckedException.java —— 非受檢異常繼承 RuntimeExceptionpublicclassMyUncheckedExceptionextendsRuntimeException{//final字段必須在全部構(gòu)造器中初始化privatefinalStringid;//編號(hào)//包含報(bào)錯(cuò)idpublicMyUncheckedException(Stringid){super(未找到該id: id);this.idid;}//包含錯(cuò)誤消息錯(cuò)誤原因publicMyUncheckedException(Stringmessage,Throwablecause){super(message,cause);this.idnull;}//包含錯(cuò)誤消息報(bào)錯(cuò)id錯(cuò)誤原因publicMyUncheckedException(Stringid,Stringmessage,Throwablecause){super(message,cause);this.idid;}publicStringgetId(){returnid;}}3. Main.java —— 測(cè)試主類(lèi)importjava.io.IOException;publicclassMain{publicstaticvoidmain(String[]args){try{thrownewMyCheckedException(未知錯(cuò)誤,newIOException(文件讀取失敗));}catch(MyCheckedExceptione){//System.out.println(e) 調(diào)用的是 Throwable.toString()其格式通常為 類(lèi)名: 消息它默認(rèn)不包含 Cause 信息System.out.println(e - e.getCause());}System.out.println();System.out.println(------拋出異常帶錯(cuò)誤消息和錯(cuò)誤原因------);a();System.out.println();System.out.println(------拋出異常帶報(bào)錯(cuò)id錯(cuò)誤消息錯(cuò)誤原因------);b();System.out.println();System.out.println(------拋出異常帶報(bào)錯(cuò)id------);c();System.out.println();}//拋出異常帶錯(cuò)誤消息和錯(cuò)誤原因staticvoida(){try{thrownewMyUncheckedException(未知錯(cuò)誤1,newIOException(底層原因));}catch(MyUncheckedExceptione){System.out.println(e - e.getCause());}}//拋出異常帶報(bào)錯(cuò)id錯(cuò)誤消息錯(cuò)誤原因staticvoidb(){try{thrownewMyUncheckedException(222,未知錯(cuò)誤2,newIOException(底層原因));}catch(MyUncheckedExceptione){System.out.println(e - e.getId() - e.getCause());}}//拋出異常帶報(bào)錯(cuò)idstaticvoidc(){try{thrownewMyUncheckedException(333);}catch(MyUncheckedExceptione){System.out.println(e);}}}三、運(yùn)行結(jié)果