Java 中的 assert 關鍵字

Rupam Yadav 2023年1月30日 2021年6月29日
  1. 在 Java 中使用 assert 作為條件
  2. 在 Java 中使用 assert condition : expression
  3. 驗證程式碼的不可達部分是否實際上是不可達的
  4. 在內部不變數的情況下
Java 中的 assert 關鍵字

在 Java 中,你可以使用 assert 關鍵字來啟用斷言。此函式用於測試我們對程式的假設。我們可以通過兩種方式在 Java 中使用斷言,我們將在本文中解決這些問題。

在 Java 中使用 assert 作為條件

斷言是檢測和糾正程式錯誤的最快捷、最簡單的方法。斷言在執行時被假定為真。否則,如果它是假的,它會丟擲一個斷言錯誤。

這裡,assert 條件是一個布林表示式。

public class JavaAssertCheck {
    public static void main (String args[]){
        String[] names = {"John", "Mary", "David"};
        assert names.length == 2;
        System.out.println("There are "+names.length + "  names in an array");
    }
}

輸出:

There are 3  names in an array

斷言被禁用;因此,該程式將編譯並執行而不會顯示任何錯誤。但是如果斷言被啟用並且條件為假,JVM 會立即丟擲一個 AssertionError 並停止程式。

Exception in thread "main" java.lang.AssertionError
	at JavaAssertCheck.main(JavaAssertCheck.java:5)

在 Java 中使用 assert condition : expression

在這種斷言格式中,如果條件被評估為假,則表示式被傳遞給 AssertionError 的建構函式。如果斷言被啟用並且如下所示的假設為假,則顯示帶有作為詳細訊息的傳遞表示式的 AssertionError

此訊息有助於正確識別錯誤並修復錯誤。

public class JavaAssertCheck {
    public static void main (String args[]){
        String[] names = {"John", "Mary", "David"};
        assert names.length == 2 : "The assertion condition is false.";
        System.out.println("There are "+names.length + "  names in an array");
    }
}

輸出:

Exception in thread "main" java.lang.AssertionError: The assertion condition is false.
	at JavaAssertCheck.main(JavaAssertCheck.java:5)

在這裡,它顯示了我們可以在 Java 中使用斷言概念的某些條件。

驗證程式碼的不可達部分是否實際上是不可達的

 public void unReachableCode(){
        System.out.println("Unreachable Code");
        return;
        assert true;
 }

如果你在任何你認為不應到達流的位置進行假設,則此函式將在刪除無法到達的語句時提示錯誤。

在內部不變數的情況下

在斷言可用之前,許多程式設計師使用註釋來記錄他們對程式的假設。如下面的多路 if 語句所示,我們可能想寫一些東西來解釋我們對 else 情況的假設。


public class JavaAssertCheck {
    public static void main (String args[]){
        int n = 37;
        if(n % 3 == 0) System.out.println("n % 3 == 0");
        else if (n % 3 == 1) System.out.println("n % 3 == 1");
        else assert n % 3 == 2 : "Assumption is false. "+n;
    }
}

不應該在公共方法中使用斷言來檢查傳遞的引數,因為使用者可以自己提供這些引數;因此,它可能會失敗並導致 AsssertionError。不要使用斷言來管理你的應用程式正常工作所需的任務。一個例子是從列表中刪除空元素。

通常,斷言中包含的表示式應該沒有副作用。

Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn