Java中的assert使用
2009-05-28 16:11
239 查看
1、assertion(断言)是jdk1.4才开始支持的新功能,主要在开发和测试时开启,为保证性能,在正式发布后通常是关闭。
2、Java中assertion与C中的assertion的区别在于:
1)Java中是使用assert关键字去实现其功能,而C中是使用的类库函数;
2)C中的assertion是在编译时开启,Java中则是在运行时才开启(但是在编译时,一定要在jdk1.4环境下,否则会编译通过不,因为assert是个新的关键字),方式如下:
java -ea AssertTest
3、assert表达式有两种:
1)assert exp1 此时的exp1为一个boolean类型的表达式
当其值为true时,运行通过,如果为false,则会抛出一个相应的AssertionError,注意它可以被catch,也可以不去处理
2)assert exp1 : exp2 此时的exp1同上,而exp2可以为基本类型或一个Object
当exp1的值为true时,同上,且exp2不会被运算;而当exp1的值为false时,将会抛出AssertionError,同时将exp2的结果作为AssertionError构造器中的参数,当使用catch该错误时,可利用getMessage()方法打印出exp2的结果。
4、关于assert使用的范围
1)不要将其用在去判断public方法的参数,如下
2)也不要将其用来去直接判断方法的返回值,如下
这种情况下,如过assertion为disabled,则f2中的f1()不会执行,此时可以用下面的方法
下面是两个关于assert应用的简单例子
编译:javac -d . AssertTest1.java
运行:java -ea AssertTest1
结果为:
in true condition
Exception in thread "main" java.lang.AssertionError
at AssertTest1.assertMe(AssertTest1.java:4)
at AssertTest1.main(AssertTest1.java:14)
运行后结果:
in true condition
Error Occur!
详细参考:http://arthennala.blog.51cto.com/287631/56996
2、Java中assertion与C中的assertion的区别在于:
1)Java中是使用assert关键字去实现其功能,而C中是使用的类库函数;
2)C中的assertion是在编译时开启,Java中则是在运行时才开启(但是在编译时,一定要在jdk1.4环境下,否则会编译通过不,因为assert是个新的关键字),方式如下:
java -ea AssertTest
3、assert表达式有两种:
1)assert exp1 此时的exp1为一个boolean类型的表达式
当其值为true时,运行通过,如果为false,则会抛出一个相应的AssertionError,注意它可以被catch,也可以不去处理
2)assert exp1 : exp2 此时的exp1同上,而exp2可以为基本类型或一个Object
当exp1的值为true时,同上,且exp2不会被运算;而当exp1的值为false时,将会抛出AssertionError,同时将exp2的结果作为AssertionError构造器中的参数,当使用catch该错误时,可利用getMessage()方法打印出exp2的结果。
4、关于assert使用的范围
1)不要将其用在去判断public方法的参数,如下
public void f1(int x) { assert x > 0; .... }
2)也不要将其用来去直接判断方法的返回值,如下
public boolean f1(int x) {return true;} public void f2(int y) {assert f1()}
这种情况下,如过assertion为disabled,则f2中的f1()不会执行,此时可以用下面的方法
public void f2() { boolean flag = f1(); assert flag; ... }
下面是两个关于assert应用的简单例子
public class AssertTest1 { public void assertMe(boolean foo) { assert foo ? true : false; System.out.println("in true condition"); } public static void main(String[] args) { AssertTest1 at = new AssertTest1(); at.assertMe(true); at.assertMe(false); }
编译:javac -d . AssertTest1.java
运行:java -ea AssertTest1
结果为:
in true condition
Exception in thread "main" java.lang.AssertionError
at AssertTest1.assertMe(AssertTest1.java:4)
at AssertTest1.main(AssertTest1.java:14)
public class AssertTest2 { public void assertMe(boolean foo) { String str = null; assert foo?true:false : str = "Error Occur!"; System.out.println("in true condition"); } public static void main(String[] args) { AssertTest2 at = new AssertTest2(); try { at.assertMe(true); at.assertMe(false); } catch(AssertionError ae) { System.out.println(ae.getMessage()); } } }
运行后结果:
in true condition
Error Occur!
详细参考:http://arthennala.blog.51cto.com/287631/56996
相关文章推荐
- Java Assert使用<转>
- java 断言 assert 初步使用:断言开启、断言使用
- java assert 使用
- 01 java断言assert初步使用:断言开启、断言使用
- 理解和正确使用Java中的断言(assert)
- Java Assert使用
- 理解和正确使用Java中的断言(assert)
- 【Java基础】——断言assert使用
- java assert的使用
- K:java 断言 assert 初步使用:断言开启、断言使用
- Java assert 关键字使用
- 【Java基础】——断言assert使用
- 理解和正确使用Java中的断言(assert)
- java使用assert断言时不起作用的解决办法
- Java断言assert的使用方法
- JAVA学习笔记_Junit测试简单使用_assertEquals
- JAVA中assert使用
- java 断言 assert 初步使用:断言开启、断言使用
- java调试技巧----assert断言的使用
- Java之assert方法使用