您的位置:首页 > 编程语言 > Java开发

Java 断言(assert)

2016-08-07 00:40 387 查看
参考 http://lavasoft.blog.51cto.com/62575/43735/

一、概述

C/C++语言中都有assert关键,表示断言。

在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。

二、简要介绍

Java1.4中新增了一个关键字:assert。注意点如下:

(1)为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!),如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。

(2)assert断言失败,意味着程序会直接崩溃并退出。

三、语法形式

1、assert <boolean表达式>

如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。


2、assert <boolean表达式> : <错误信息表达式>

如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。


四、代码实战

public class AssertDemo {
public static void main(String[] args) {
//断言1结果为true,则继续往下执行
assert true;
System.out.println("断言1没有问题,Go!");
System.out.println("\n-----------------\n");
//断言2结果为false,程序终止
assert false : "断言失败,此表达式的信息将会在抛出异常的时候输出!";
System.out.println("断言2没有问题,Go!");
}
}


五、使用方式

记住:无论是Eclipse还是命令行的方式,默认都是没有开启断言的。

1、Eclipse

(1)直接执行程序,默认不会执行断言。



(2)Eclipse开启断言

右键 -> Run As -> Run Configurations... ->Arguments选项卡 -> VM arguments中添加-ea或-enableassertions参数 -> Run -> 会发现打印出断言中的错误了





VM arguments中添加-ea或-enableassertions参数" title="">



2、命令行

(1)编译程序

javac AssertDemo.java


(2)执行程序(没有开启-ea开关)

java AssertDemo




(3)执行程序(开启-ea开关)

java -ea AssertDemo




六、建议

assert既然是为了调试测试程序用,不在正式生产环境下用,应该考虑更好的JUint单元测试来代替。因为从上面的例子可以看到assert信息被包含在生成的class文件里面,这样很可能会增大应用程序的体积。

另外注意:使用javac,默认使用的release方式,而我们经常使用的MyEclipse工具,用的是debug模式。

经过试验可以看出:无论是”-g:none”(不生成任何调试信息) 还是 “-nowarn”(不生成任何警告)都不能阻止assert被打包进class。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java assert