关于java 中的assert 关键字
来源:互联网 发布:json转数组 编辑:程序博客网 时间:2024/05/22 06:54
不要用assert 来检查 参数是否合法,要检查就这样写:
if(upbound < 0)
{
throw new IllegalArgumentException("upbound must be positive");
}
那assert 是用来干什么的呢?
以下是转载部分
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中的assert关键字
- 关于JAVA中的断言Assert
- Java中的断言 assert 关键字解析
- java中的assert关键字及用法:
- Python中的assert关键字
- Java assert关键字
- java 关键字之 assert
- Java assert关键字
- java关键字之assert
- java中assert关键字
- Java关键字assert
- java assert关键字
- java关键字 #assert
- java assert关键字
- Java之assert关键字
- Java关键字assert
- JAVA assert关键字
- python文件支持中文注释
- 我的第一个 Symbian Qt 应用
- jquery基础(二)
- Silverlight读取XML代码(非常有用^-^)
- JRTPLib移植到OMAP3530平台
- 关于java 中的assert 关键字
- 程序员如何接项目
- 12种Javascript解决常见浏览器兼容问题的方法
- 隐身,是为了躲避失望
- 开始程序员生涯的五个建议
- 没有为 SQL 缓存通知启用数据库
- 积累编程经验的三种途径
- 了解jQuery技巧来提高你的代码
- MySQL的Sql语句优化