淺析Java異常處理中斷言的使用
斷言的概念
斷言用于證明和測(cè)試程序的假設(shè),比如“這里的值大于 5”。
斷言可以在運(yùn)行時(shí)從代碼中完全刪除,所以對(duì)代碼的運(yùn)行速度沒(méi)有影響。
斷言的使用
斷言有兩種方法:
一種是 assert<<布爾表達(dá)式>> ;
另一種是 assert<<布爾表達(dá)式>> :<<細(xì)節(jié)描述>>。
如果布爾表達(dá)式的值為false , 將拋出AssertionError 異常; 細(xì)節(jié)描述是AssertionError異常的描述文本使用 javac –source 1.4 MyClass.java 的方式進(jìn)行編譯示例如下:
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"); } }
由于引入了一個(gè)新的關(guān)鍵字,所以在編譯的時(shí)候就需要增加額外的參數(shù),要編譯成功,必須使用 JDK1.4 的 javac 并加上參數(shù)'-source 1.4',例如可以使用以下的命令編譯上面的代碼:
javac -source 1.4 AssertExample.java
以上程序運(yùn)行使用斷言功能也需要使用額外的參數(shù)(并且需要一個(gè)數(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,因此斷言功能使得程序運(yùn)行時(shí)拋出斷言錯(cuò)誤,注意是錯(cuò)誤, 這意味著程序發(fā)生嚴(yán)重錯(cuò)誤并且將強(qiáng)制退出。斷言使用 boolean 值,如果其值不為 true 則 拋出 AssertionError 并終止程序的運(yùn)行。
斷言推薦使用方法
用于驗(yàn)證方法中的內(nèi)部邏輯,包括:
- 內(nèi)在不變式
- 控制流程不變式
- 后置條件和類不變式
注意:不推薦用于公有方法內(nèi)的前置條件的檢查。
運(yùn)行時(shí)屏蔽斷言
運(yùn)行時(shí)要屏蔽斷言,可以用如下方法:
java –disableassertions 或 java –da 類名
運(yùn)行時(shí)要允許斷言,可以用如下方法:
java –enableassertions 或 java –ea類名
相關(guān)文章
SpringBoot使用Redis對(duì)用戶IP進(jìn)行接口限流的項(xiàng)目實(shí)踐
本文主要介紹了SpringBoot使用Redis對(duì)用戶IP進(jìn)行接口限流,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Spring 框架中注入或替換方法實(shí)現(xiàn)
這篇文章主要介紹了Spring 框架中注入或替換方法實(shí)現(xiàn),非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05詳解Nacos中注冊(cè)中心和配置中心的實(shí)現(xiàn)
Spring?Cloud?Alibaba?是阿里巴巴提供的一站式微服務(wù)開(kāi)發(fā)解決方案。而?Nacos?作為?Spring?Cloud?Alibaba?的核心組件之一,提供了兩個(gè)非常重要的功能:注冊(cè)中心和配置中心,我們今天來(lái)了解和實(shí)現(xiàn)一下二者2022-08-08Java 無(wú)符號(hào)右移與右移運(yùn)算符的使用介紹
這篇文章主要介紹了Java 無(wú)符號(hào)右移與右移運(yùn)算符的使用介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06使用Springboot實(shí)現(xiàn)健身房管理系統(tǒng)
這篇文章主要介紹了使用Springboot如何實(shí)現(xiàn)健身房管理系統(tǒng),希望對(duì)你有所幫助2021-07-07詳解springboot+mybatis-plue實(shí)現(xiàn)內(nèi)置的CRUD使用詳情
這篇文章主要介紹了詳解springboot+mybatis-plue實(shí)現(xiàn)內(nèi)置的CRUD使用詳情,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07