package org.test;
public class AssertTest {
/**
jvm 断言默认是关闭的。
在eclipse开启断言assert。
在Run->Run configurations ->打开arguments选项卡,在VM argments框里填入-ea
如果要关闭assert,则填入-da
使用方法:
1:assert expression; assert在参数expression为false才抛出异常IllegalArgumentException
2:assert expression1:expression2; assert在参数expression1为false才抛出异常IllegalArgumentException,同时打印expression2
*/
public static void main(String[] args) {
// // 判断断言assert是否开启
// boolean isOpen = false;
// assert isOpen=true; //如果开启了断言,会将isOpen的值改为true
// System.out.println(isOpen);//打印是否开启了断言
//测试1
// assert false;
// System.out.println("Exception...");
/*结果打印:
Exception in thread "main" java.lang.AssertionError
at org.test.AssertTest.main(AssertTest.java:21)
后面的打印语句没有出现,直接报java.lang.AssertionError异常,说明assert的作用就是在接收的boolean值为false时,
打断程序的运行。类似自定义Exception。
*/
//测试2
// Object o=null;
// isNull(o);
//测试3
// Object o2=null;
// assert true:o2;//没有打印
// Object o3=null;
// assert false:o3;
/*
Exception in thread "main" java.lang.AssertionError: null
at org.test.AssertTest.main(AssertTest.java:42)
*/
// String o4=new String("hello");
// assert false:o4;
/*
Exception in thread "main" java.lang.AssertionError: hello
at org.test.AssertTest.main(AssertTest.java:49)
*/
//测试4
String ob=null;
String exceptionMessage=new String("object ob is null...");
isNull(ob,exceptionMessage);
/*
Exception in thread "main" java.lang.AssertionError: object ob is null...
at org.test.AssertTest.isNull(AssertTest.java:73)
at org.test.AssertTest.main(AssertTest.java:59)
*/
}
public static void isNull(Object obj){
assert obj!=null;//obj 为null时断言(因为assert在参数为false才执行异常)
//或者使用异常
// if(obj==null){
// throw new IllegalArgumentException("IllegalArgumentException,Object is null.");
// }
}
//重载
public static void isNull(Object obj,Object printMessage){
assert (obj!=null):printMessage.toString();
//obj 为null时断言(因为assert在参数为false才执行异常),第二个参数是在打印异常时的信息
}
}
assert断言学习
最新推荐文章于 2022-10-11 23:03:55 发布