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過來的!
  • 尊重每一位學習知識的人,同時也尊重每一位分享知識的人。
    😎你的點贊與關注,是我努力前行的無限動力。🤩