Java基礎之淺談異常與了解斷言
一、產生錯誤原因
- 用戶輸入錯誤
- 設備錯誤
- 物理限制
- 代碼錯誤
二、解決錯誤—異常
- 在Java中異常對象都是派生於Throwable類的一個實例。
- 我們一般將異常分為兩種:①Error和②Exception
- 如果你的程序出現了Error:是程序無法處理的錯誤,表示運行應用程序中較嚴重問題。基本上躺平吧
- 如果你的程序出現了Exception:我們可以通過拋出異常並捕獲異常來處理。
2.1引起異常的常見問題
派生於RuntimeException的異常包括一下問題:
- 錯誤的強制類型轉換
- 數組訪問越界
- 訪問null指針
- 出現這些問題,一定是你自己的問題
其它類異常包括:
- 試圖超越文件末尾繼續讀取數據
- 試圖打開一個不存在的文件
- 試圖根據給定的字符串查找Class對象,而這個字符串表示的類並不存在。
2.2常見異常處理
- 過程一:「拋」:一旦出現異常,就會在異常代碼處生成一個對應異常類的對象,並將此對象拋出。
一旦拋出對象後,其後的代碼不在執行。(除非這個異常被捕獲,這樣後面的代碼可以繼續執行) - 過程二:「抓」:可以理解為異常處理方式:①try-catch-finally(自己解決) ②throws(扔給別人解決)
三、異常的使用
3.1如何拋出異常
- 首先我們拋出異常通常使用throws
public class Son {
public void run() throws Exception{
//若代碼中,出現異常,我們可以將這個異常拋出,拋給調用者去解決這個問題。
//可以一層一層的拋出,但是終究我們還是要捕獲這個異常,解決問題。
//有時候你也會認為,這是一個極其不負責任的做法。😄
}
}
3.2創建異常類(自定義異常)
- 我們需要做的很簡單,定義一個派生於(繼承)Exception的類,或者是Exception的某個子類。
- 自定義異常通常包含兩個構造器,一個是默認構造器,一個是包含詳細描述信息的構造器。
class 自定義異常類 extends Exception {
public 自定義異常類() {
}
public 自定義異常類(String message) {
super(message);
}
}
public class Son {
int a = 0;
public void sum() throws 自定義異常類 {
if(a < 0)
throw new 自定義異常類("a不能小於0");
}
}
3.3捕獲異常try-catch-finally
public void test() {
try {
//可能存在問題的歧義代碼
}catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("一定會走的代碼");
}
}
- 我們先走try里的代碼,若遇到了異常,則進入catch,將異常處理後,繼續執行finally語句
- 若try語句中又return語句,我們仍然執行完try後繼續執行finally。
- finally的語句塊一定會被執行。(除非我們沒有正確處理遇到的異常)
- 若try語句塊中沒有任何異常,則跳過catch語句塊。
四、簡單斷言
assert關鍵字:
assert condition;
,assert condition :expression;
- 斷言的作用一般都是debug時候使用,如果 assert x>0;結果為true,程序繼續執行,反之程序直接停止。
- 了解即可,我這個層次接觸用的較少。
五、結尾
- 對於異常處理內容就總結這麼多,若想深入學習等待後續更新,基礎部分掌握這些足矣。如果有不足之處,希望大家多多包涵,多多支持。如果有不懂的地方可以直接私信問我,歡迎來訪!
- 我將會繼續更新關於Java的學習知識,感興趣的小夥伴可以關注一下。
- 文章寫得比較走心,用了很長時間,絕對不是copy過來的!
- 尊重每一位學習知識的人,同時也尊重每一位分享知識的人。
😎你的點贊與關注,是我努力前行的無限動力。🤩