在c++中我们习惯用断言(Assertion),静态断言(Static Assertion)等对参数和环境做出判断,避免程序因不当的输入或错误的环境而产生逻辑异常。其实除了C,C++之外 Python和Java也有对应的断言机制。
首先说一下什么是断言应用在哪,其实用易理解的话来说 ,断言主要使用在代码开发和测试时期,用于对某些关键数据的判断,如果这个关键数据不是你程序所预期的数据,程序就提出警告或退出。
java中断言格式
assert <布尔表达式>
assert <布尔表达式> : <错误信息>
关于java断言(assert)我们需要知道的技术点。
(1)assert默认是不启用的
我们知道断言是为调试程序服务的,目的是为了能够快速、方便地检查到程序异常,但Java在默认条件下是不启用的,要启用就需要在编译、运行时加上相关的关键字。
在vm中输入-enableassertions 或简写 -ea


//assert <布尔表达式>
public static void method1(){
int i = 1;
assert i==2;
System.out.println("如果断言正常,我就被打印");
}

//assert <布尔表达式> : <错误信息>
public static void method2(){
int i = 1;
assert i==2:"如果断言错误,我就被打印";
System.out.println("如果断言正常,我就被打印");
}

(2)assert抛出的异常AssertionError是继承自Error的
断言失败,JVM会抛出一个AssertionError错误,它继承自Error,表示这是一个严重问题,开发者必须予以关注并解决之。

网友评论