Java 中的 assert 關鍵字

Rupam Yadav 2023年10月12日
  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。不要使用斷言來管理你的應用程式正常工作所需的任務。一個例子是從列表中刪除空元素。

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

作者: 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