一.使用try-catch捕獲單個異常 如果異常出現的話,會立即終止程式,我們得處理異常: 1) :該方法不處理,而是聲明拋出,由該方法的調用者來處理,(throws) 2) :在方法中使用try-catch的語句塊來處理異常- 使用try-catch捕獲單個異常: 語法如下: try{ 編寫可能會 ...
一.使用try-catch捕獲單個異常
如果異常出現的話,會立即終止程式,我們得處理異常:
1) :該方法不處理,而是聲明拋出,由該方法的調用者來處理,(throws)
2) :在方法中使用try-catch的語句塊來處理異常-
使用try-catch捕獲單個異常:
語法如下:
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是返回一個錯誤, 返回給該方法的調用者
微觀上分析和理解框架各個模塊的設計細節
巨集觀上分析和把控框架整體的設計思想