关于java 中的assert 关键字
2010-10-21 12:08
232 查看
不要用assert 来检查 参数是否合法,要检查就这样写:
if(upbound < 0)
{
throw new IllegalArgumentException("upbound must be positive");
}
那assert 是用来干什么的呢?
以下是转载部分
JAVA中assert用法和注意
2009年11月10日 星期二 21:07
if(upbound < 0)
{
throw new IllegalArgumentException("upbound must be positive");
}
那assert 是用来干什么的呢?
以下是转载部分
JAVA中assert用法和注意
2009年11月10日 星期二 21:07
23.int z=5; 24. 25. public void stuff1(int x) { 26. assert (x> 0); 27. switch(x) { 28. case 2: x= 3; 29. default: assert false; } } 30. 31. private void stuff2(int y) { assert (y < 0); } 32. 33. private void stuff3() { assert (stuff4()); } 34. 35. private boolean stuff4() { z = 6; return false; } Which is true? A. All of the assert statements are used appropriately. B. Only the assert statement on line 31 is used appropriately. C. The assert statements on lines 29 and 31 are used appropriately. D. The assert statements on lines 26 and 29 are used appropriately. E. The assert statements on lines 29 and 33 are used appropriately. F. The assert statements on lines 29, 31, and 33 are used appropriately. G. The assert statements on lines 26, 29, and 31 are used appropriately. 23.int z=5; 24. 25. public void stuff1(int x) { 26. assert (x> 0); 27. switch(x) { 28. case 2: x= 3; 29. default: assert false; } } 30. 31. private void stuff2(int y) { assert (y < 0); } 32. 33. private void stuff3() { assert (stuff4()); } 34. 35. private boolean stuff4… 首先,这道题问的是哪些行的断言的使用是适当的,而并不是能够通过编译的。 实际上,代码是可以编译通过的。 问题是要找出哪些的用法是恰当的。 断言的使用,有如下几个原则: 1.不要使用断言验证公共方法的参数。 2.可以使用断言验证私有方法的参数。 3.不要使用断言验证命令行参数 4.在公共方法内,可以使用断言检查从不会发生的情况 比如,switch中的default 像下面的应用就是适当的 Java code switch(x){ case 1: y=1; break; case 2: y=2; break; default: assert false; } 你可以假设x为1或者2,所以default可以认为是不可到达的,这个时候可以使用断言 5.不要使用可能产生副作用的断言 也就是断言表达式应该使程序保持在进入它之前的状态。 所以,根据上述5点, 可以判断出 26行的断言使用不恰当,因为它是用来验证了一个公共方法。 29行的也不恰当,因为28行的后面并没有break语句,也就是说如果进入了case2,则一定会执行default的内容 31行的使用是正确的,因为用断言验证的是一个私有的方法 33行的使用是不恰当的,因为stuff4()肯定返回一个false,所以33行肯定会抛出AssertionError,这个违反了第5个原则 综上所述,偶认为答案是 B |
相关文章推荐
- 关于JAVA中的断言Assert
- 关于java中static关键字的研读笔记
- java中assert关键字
- 在Java中,关于abstract关键字
- 关于java中的synchronized关键字的一些小研究
- java中关于transient关键字小结
- 【java】关于static关键字在重写父类方法时的作用
- Java之assert关键字
- java中的assert关键字及用法:
- 关于java中的synchronized关键字的理解
- 关于Java的点点滴滴(1)——Static关键字
- java基础:关于final关键字
- 关于java中的各种关键字
- java的assert关键字的用法
- Java中关于原子操作和volatile关键字
- 在Java中,关于static关键字
- Java陷阱之assert关键字
- 关于java的synchronized 关键字
- Java中的断言 assert 关键字解析
- 关于Java中的final关键字