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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn