断言

  • 语法
assert 条件
assert 条件:表达式
如果 结果为 false, 则抛出一个 AssertionError 异常。
在第二种形式中,表达式将被传人 AssertionError 的构造器, 并转换成一个消息字符串。

例如:

public static void main(String[] args) {
        test01(-3);
    }

    public static void test01(int x){
        assert x > 0 : x + "必须非负数";

        System.out.println(x * x);
    }

结果:

Exception in thread "main" java.lang.AssertionError: -3必须非负数
	at com.hyq.java3.Assert.test01(Assert.java:10)
	at com.hyq.java3.Assert.main(Assert.java:6)

test01(3);则结果是9.

  • 开启禁用断言
在默认情况下, 断言被禁用。可以在运行程序时用 -enableassertions 或 -ea 选项启用:java -enableassertions MyApp
需要注意的是, 在启用或禁用断言时不必重新编译程序。 启用或禁用断言是类加载器( class loader) 的功能。 
当断言被禁用时, 类加载器将跳过断言代码, 因此,不会降低程序运行的速度。
也可以在某个类或整个包中使用断言, 例如:
java -ea:MyClass -eaiconi.inycompany.inylib.. , MyApp
这条命令将开启 MyClass 类以及在 com.mycompany.mylib 包和它的子包中的所有类的断言。
选项 -ea 将开启默认包中的所有类的断言。
也可以用选项 -disableassertions 或 -da 禁用某个特定类和包的断言:
java -ea:... -da:MyClass MyApp

在idea中开启断言

原文地址:https://www.cnblogs.com/huyuqing/p/14285057.html