異常-筆記-01

一.使用try-catch捕獲單個異常數據庫

若是異常出現的話,會當即終止程序,咱們得處理異常:網絡

1) :該方法不處理,而是聲明拋出,由該方法的調用者來處理,(throws)框架

2) :在方法中使用try-catch的語句塊來處理異常-jvm

使用try-catch捕獲單個異常: ide

語法以下:spa

try{設計

編寫可能會出現異常的代碼調試

}catch(異常類型 e){日誌

處理異常的代碼對象

//記錄日誌/打印平常信息,繼續拋出異常

}

注意:catch 和try都不能單獨使用

 

 

二.獲取和查看異常信息

1) :String getMessage(): 獲取異常的描述信息,緣由

2) String toString():獲取異常的類型和異常描述的信息(通常不用)

3) :void printStackTrace():打印異常的跟蹤棧信息並輸出到控制檯.不須要使用System

 

 

包含了異常的類型.異常的緣由,還包括了異常出現的位置,在開發調試階段,都得使用printStackTrace

如今在catch語句塊中,必須寫: e.printStackTrace(); 目的:查看異常的具體信息,方便調試和修改.

 

三.使用try-catch捕獲多個異常

try{

編寫可能會出現異常的代碼

}catch(異常類型A  e){當try中出現A類型異常,就用該catch來捕獲

處理異常的代碼1

//記錄日誌/打印平常信息,繼續拋出異常

}catch(異常類型B  e){當try中出現B類型異常,就用該catch來捕獲

處理異常的代碼2

//記錄日誌/打印平常信息,繼續拋出異常

}

注意:代碼在一瞬間只能出現一種類型的異常,只須要一個catch捕獲,不可能同時出現多個異常. 

Exception放在最後

 

 

四.保證關閉資源的finally代碼塊

finally語句塊表示最終都會執行的代碼, 不管有沒有異常.

何時的代碼必須最終執行

當咱們在try語句塊中打開了一些物理資源(磁盤文件/網絡鏈接/數據庫鏈接等).咱們都得在使用完以後,最終關閉打開的資源,

finally的語法

1) : try........finally: 此時沒有catch來捕獲異常, 由於此時根據應用場景,咱們會拋出異常, 本身不處理

2) : try.....catch .........finally: 自身須要處理異常, 最終還得關閉資源.

注意:finally不能單獨使用.

 

當只有在try或catch中調用退出jvm的相關方法, 此時finally纔不會執行,

不然finally永遠會執行

System.exit(0)://退出jvm

--------------------------------------------------------------------------------------------

必須使用finally才能保證最終必須執行的代碼

 

果finally有return語句,永遠返回finally中的結果,避免該狀況,

 

 六.異常的分類

1) : 編譯時期異常,checked異常.在編譯時期,就會檢查,若是沒有處理異常,則編譯失敗

2) : 運行時期異常,runtime異常,在運行時期, 檢查異常,在編譯時期, 運行異常不會編譯器檢測(不報錯)

運行異常: 在編譯時期, 可處理,可不處理.

如何肯定某一個類是編譯異常仍是運行異常

返回錯誤結果-throw語句

拋出異常:

throw:運用於方法內部,用於給調用者返回一個異常對象,和returm同樣,會結束當前方法

throws: 運用於方法聲明之上,用於表示當前方法不處理異常,而是提醒該方法的調用者來處理異常(

(拋出異常)

//表示: 在本方法中不處理某種類型的異常, 提醒調用者須要來處理異常

:private static int divide(int num1,int num2) throws Exception

若是每個方法都放棄處理異常,都直接經過throws聲明拋出,最後異常會拋到main方法.

若是此時mian方法不處理,繼續拋出給jvm,底層的處理機制就是打印異常的跟蹤棧信息

runtime異常,默認就是這種處理方式.

 

 

throw語句:

運用於方法內部,拋出一個具體的異常對象,

throw new 異常類(「異常信息」);終止方法.

throw:

通常的,當一個方法出現不正常的狀況的時候,咱們不知道該方法應該返回什麼,此時就返回一個錯誤,

在catch語句塊中繼續向上拋出異常

return是返回一個值,throw是返回一個錯誤, 返回給該方法的調用者

 

微觀上分析和理解框架各個模塊的設計細節

宏觀上分析和把控框架總體的設計思想

相關文章
相關標籤/搜索