初识Java语言的 assert关键字
2008-02-05 00:31Update
TAGS: assert
可能大家已经知道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参数即可。
- Relative Articles
- Java String处理入门 - null或空值的判断处理 - (2008-03-04 15:44)
- Java static - 静态(全局)方法与静态变量 - (2008-03-02 00:12)
- Java面向对象入门之 类与对象的概念区别 - (2008-03-01 21:05)
- Java语言对properties资源文件的处理 - ResourceBundle类的用法 - (2008-02-05 00:05)
- 怎么向一个命令行Java程序传递参数 - Java入门之命令行参数传递 - (2008-01-31 20:59)
- Java语言的参数传递和处理方法 - 全面掌握Java参数传递与参数 - (2008-01-31 20:57)
- Java日期.时间处理之Date类 - 全面掌握Java里的日期处理 - (2008-01-31 20:53)
- Java基础之 Java注释 - (2008-01-26 15:35)
- Java基础之屏幕打印语句:print()/println() - (2008-01-26 14:46)
- Java语言的克隆与深层次克隆技术入门与精通 - (2007-11-13 17:44)
- Java的历史和发展 - (2007-11-13 00:29)
- Java语言里的包,类,接口 - (2007-11-13 00:27)
- 环境篇 - 构造Java开发环境 - (2007-11-13 00:24)
- Java语言的操作符 - (2007-10-23 11:36)
- Java语言里的数据类型,变量 - (2007-10-22 15:55)