淺析Java異常處理中斷言的使用
斷言的概念
斷言用于證明和測試程序的假設(shè),比如“這里的值大于 5”。
斷言可以在運行時從代碼中完全刪除,所以對代碼的運行速度沒有影響。
斷言的使用
斷言有兩種方法:
一種是 assert<<布爾表達式>> ;
另一種是 assert<<布爾表達式>> :<<細節(jié)描述>>。
如果布爾表達式的值為false , 將拋出AssertionError 異常; 細節(jié)描述是AssertionError異常的描述文本使用 javac –source 1.4 MyClass.java 的方式進行編譯示例如下:
public class AssertExample {
public static void main(String[] args) {
int x = 10;
if (args.length > 0) {
try {
x = Integer.parseInt(args[0]);
} catch (NumberFormatException nfe) {
/* Ignore */
}
}
System.out.println("Testing assertion that x == 10");
assert x == 10 : "Our assertion failed";
System.out.println("Test passed");
}
}
由于引入了一個新的關(guān)鍵字,所以在編譯的時候就需要增加額外的參數(shù),要編譯成功,必須使用 JDK1.4 的 javac 并加上參數(shù)'-source 1.4',例如可以使用以下的命令編譯上面的代碼:
javac -source 1.4 AssertExample.java
以上程序運行使用斷言功能也需要使用額外的參數(shù)(并且需要一個數(shù)字的命令行參數(shù)),例如:
java -ea AssertExample 1
程序的輸出為:
Testing assertion that x == 10 Exception in thread "main" java.lang.AssertionError:Our assertion failed at AssertExample.main(AssertExample.java:20)
由于輸入的參數(shù)不等于 10,因此斷言功能使得程序運行時拋出斷言錯誤,注意是錯誤, 這意味著程序發(fā)生嚴重錯誤并且將強制退出。斷言使用 boolean 值,如果其值不為 true 則 拋出 AssertionError 并終止程序的運行。
斷言推薦使用方法
用于驗證方法中的內(nèi)部邏輯,包括:
- 內(nèi)在不變式
- 控制流程不變式
- 后置條件和類不變式
注意:不推薦用于公有方法內(nèi)的前置條件的檢查。
運行時屏蔽斷言
運行時要屏蔽斷言,可以用如下方法:
java –disableassertions 或 java –da 類名
運行時要允許斷言,可以用如下方法:
java –enableassertions 或 java –ea類名
相關(guān)文章
IDEA 重新導(dǎo)入依賴maven 命令 reimport的方法
這篇文章主要介紹了IDEA 重新導(dǎo)入依賴maven 命令 reimport的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
圖解Spring Security 中用戶是如何實現(xiàn)登錄的
這篇文章主要介紹了圖解Spring Security 中用戶是如何實現(xiàn)登錄的,文中通過示例代碼和圖片介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-07-07
Java數(shù)組的特性_動力節(jié)點Java學(xué)院整理
數(shù)組是基本上所有語言都會有的一種數(shù)據(jù)類型,它表示一組相同類型的數(shù)據(jù)的集合,具有固定的長度,并且在內(nèi)存中占據(jù)連續(xù)的空間。在C,C++等語言中,數(shù)組的定義簡潔清晰,而在Java中確有一些會讓人迷惑的特性。本文就嘗試分析這些特性2017-04-04
SpringBoot實現(xiàn)OneDrive文件上傳的詳細步驟
這篇文章主要介紹了SpringBoot實現(xiàn)OneDrive文件上傳的詳細步驟,文中通過代碼示例和圖文講解的非常詳細,對大家實現(xiàn)OneDrive文件上傳有一定的幫助,需要的朋友可以參考下2024-02-02
關(guān)于protected修飾符詳解-源于Cloneable接口
這篇文章主要介紹了protected修飾符詳解-源于Cloneable接口,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
SpringBoot @Validated注解實現(xiàn)參數(shù)分組校驗的方法實例
這篇文章主要給大家介紹了關(guān)于SpringBoot @Validated注解實現(xiàn)參數(shù)分組校驗的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-09-09

