初识Java语言的 assert关键字

2008-02-05 00:31Update
TAGS: assert

LifevV.COM编辑部

可能大家已经知道Java语言的assert关键字了,也可能已经知道assert可以用作断言,用来肯定某条件为真。但是在使用assert的时候,大家应该小心使用。


assert的概要



assert的语法
如果大家学习过C/C++语法,可能对Assert已经非常熟悉,该语句可以用来断定给定的条件为真,否则会抛出一个AssertException之类的异常,并停止程序的继续执行。

Java语言的assert语法为:

assert <条件式>
如果<条件式> 为true的时候,继续执行;否则java.lang.AssertionError错误。中止程序的执行。


或者

assert <条件式> : <错误信息>

如果<条件式> 为true的时候,继续执行;否则java.lang.AssertionError错误,并设置错误信息。中止程序的执行。


比如,有个方法:

private void doSomething(String id) {
    assert id != null && !id.equal("");
    System.out.println(id.trim());
}

这个方法里,我们断言id一定不为null或为空。也就是说,调用这个方法的时候,传入的id参数肯定不为空。

使用assert应该注意



注意:使用assert时一定要严加注意,为什么呢?

因为,默认的java解释器会忽略assert语句。也就是说,assert语句需要在运行时候显式开启(为java命令指定开启参数)才能生效。如果调用上面的方法的程序在运行时未指定开启参数,万一传入了一个null的id值,将引起一个致命错误,引起程序/系统的挂起。

这一点,大家使用时一定要严加注意。

为了避免这个问题,建议大家可以使用第三方的库或者自己创建一个通用的AssertUtils类。比如:

public class AssertUtils {
    public static void assert(boolean condition) {
        if (!condition) {
            throw new MyAssertError();
        }
    }
}


最后,我们提一下怎么开启assert参数。

java -ea YourApplication

也就是为java命令指定-ea参数即可。
 
Copyright ©2006-2010 lifevv.com. All Rights Reserved
POWERED BY @pmplat.syboos.com