本站首页    管理页面    写新日志    退出


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接


Blog信息
blog名称:南海大狼的blogger
日志总数:41
评论数量:34
留言数量:-7
访问次数:271628
建立时间:2005年8月15日




[电脑技术]assert语句初探
软件技术

南海大狼 发表于 2005/9/12 9:41:37

1.         assert语句的语法 JDK1.4增加了assert语句,它的语法如下: assert  assumption 或者 assert  assumption : error message or error code assumption 应该是一个布尔值。(或者是条件表达式,反正最终的结果为true或false 。)          如果assumption为true,那么一切如常,这个语句就像没有出现一样,如果assumption为false,那么程序将扔出一个java.lang.AssertionError 。如果在代码里采用了第二种带error message或者error code的写法的话,该error message或者error code将跟随java.lang.AssertionError一起显示出来。   2.         带assert语句的代码的编译 如果你在代码中使用了assert语句,那么你使用javac编译时应该像这样: javac –source 1.4 **.java 否则的话,assert关键字将不被视为关键字。(这是因为assert语句是从JDK1.4 才有的。) 当然,如果你使用JDK1.4及以上编译时,不用-source 1.4参数的话会出现warning 。 3.         运行时启动assert 。 缺省情况下assert是不被启用的。 运行时应该这样启用assert: java –ea:类名  类名 或者 java –ea:包名… 类名 相应的用-da关闭assert 。 (详细可以参考java命令的帮组)。 4.         assert的好处及使用。 我以为assert主要用来debug 。使用它能很容易定位错误。另外,在代码的适当地方用上assert语句,能够在代码中某些值的取值范围发生变化时迅速的定位代码错误,发现代码的bug 。请看下面这个例子。   假设i现在的取值就是0 和 1 。 那么我们可以这么写代码: if  (0 == i) { ….} else { //i == 1 … } 当i的值的范围发生了变化(这是完全有可能的,因为这个i的值可能是其它模块给本模块传的参数。),这个代码就很有可能有潜在的bug,而且这个bug未必能立即表现出来。即使表现出来了,要定位到这个错也不容易。因为你很可能仍然坚信i的值就是0或者1。   但是如果将以上代码改写成这样: if  (0 == i) { ….} else { //i == 1               assert  i==1:”The i value isn’t 0 or 1 .”               …. } 那么一旦i的取值范围超过了0,1 ,那么立即会扔出一个带有错误信息的java.lang.AssertionError 。这样对错误的定位就一目了然了。 5.         最后写一个运行的例子: public class TestAssert {        public static void main(String[] args) throws Exception {               int i=100;                             String errorMsg = "This is a error";               int errorCode = 10000;                             assert i>200:errorCode;                             assert i>200:errorMsg;        } }   然后编译: javac –source 1.4   TestAssert.java 然后运行: java –ea:TestAssert  TestAssert  


阅读全文(2087) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 1.094 second(s), page refreshed 144786831 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号