java断言assert初步使用:断言开启、断言使用
1 说明
java断言assert是jdk1.4引入的。
jvm断言默认是关闭的。
断言可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说“断言不具有继承性”。
断言只适用复杂的调式过程。
断言一般用于程序执行结构的判断,千万不要让断言处理业务流程。
2 判断eclipse是否开启了断言
代码如下:

    public static void main(String args[]) {
        boolean isOpen = false;
        // 如果开启了断言,会将isOpen的值改为true
        assert isOpen = true;
        // 打印是否开启了断言,如果为false,则没有启用断言
        System.out.println(isOpen);
    }

3 eclipse 中开启和关闭断言
选择菜单:run --> run Configurations
打开断言:-ea
关闭断言:-da,或者删除-ea

3 断言使用
3.1 第一种使用方法

/**
* 断言的使用方法一
*/
public static void useAssertExt1() {
boolean isOk = 1 > 2;
assert isOk;
System.out.println("程序正常");
}

执行的结果如下:
Exception in thread "main" java.lang.AssertionError
at com.rollercoaster.codecomplete.AboutAssertion.useAssertExt1(AboutAssertion.java:43)
at com.rollercoaster.codecomplete.AboutAssertion.main(AboutAssertion.java:16)
说明:
显然isOk为false,所以抛出AssertionError
3.2 第二种使用方法

/**
* 断言的第一个例子
*/
public static void useAssertExt2() {
boolean isOk = 1 > 2;
try {
assert isOk : "程序错误";
System.out.println("程序正常");
} catch (AssertionError err) {
System.out.println(err.getMessage());
}
}

运行结果如下:
程序错误
说明
assert后面跟个冒号表达式。如果冒烟前为true,则冒号后面的被忽略,否则抛出AssertionError,错误内容为冒号后面的内容。
按F3查看源代码,如下,可以看到AssertionError是继承自Error,而不是Exception,所以catch部分用Exception是不能捕捉到AssertionError信息的。
  // (version 1.7 : 51.0, super bit)
  public class java.lang.AssertionError extends java.lang.Error {...
5 有关断言的更多参数(转帖一下):
-ea java -ea 打开所有用户类的assertion
-da java -da 关闭所有用户类的assertion
-ea:<classname> java -ea:MyClass1 打开MyClass1的assertion
-da:<classname> java -da: MyClass1 关闭MyClass1的assertion
-ea:<packagename> java -ea:pkg1 打开pkg1包的assertion
-da:<packagename> java -da:pkg1 关闭pkg1包的assertion
-ea:... java -ea:... 打开缺省包(无名包)的assertion
-da:... java -da:... 关闭缺省包(无名包)的assertion
-ea:<packagename>... java -ea:pkg1... 打开pkg1包和其子包的assertion
-da:<packagename>... java -da:pkg1... 关闭pkg1包和其子包的assertion
-esa java -esa 打开系统类的assertion
-dsa java -dsa 关闭系统类的assertion
综合使用 java -dsa:MyClass1:pkg1 关闭MyClass1和pkg1包的assertion
java断言assert初步使用:断言开启、断言使用的更多相关文章
- K:java 断言 assert 初步使用:断言开启、断言使用
		@转自天地悠悠的个人博客 主要总结一下在eclipse中如何使用断言. (一)首先明确: java断言Assert是jdk1.4引入的. jvm 断言默认是关闭的. 断言是可以局部开启的,如:父类禁止 ... 
- 01 java断言assert初步使用:断言开启、断言使用
		参考文件:http://blog.sina.com.cn/s/blog_59c9412d0100fd55.html 1 说明 java断言assert是jdk1.4引入的. jvm断言默认是关闭的. ... 
- java 中的断言assert的使用
		一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,它是该版本在Java语言方面最大的革新. 从理论上来说,通过 assertion方式可以证明程 ... 
- Java断言assert
		public class Welcome{ public static void main(String[] args){ assert false; System.out.println(" ... 
- java的断言(assert)
		概述 在C和C++语言中都有assert关键,表示断言.在Java中,同样也有assert关键字,表示断言,用法和含义都差不多.在Java中,assert关键字是从JAVA SE 1.4 引入的,为了 ... 
- Java中的断言assert
		Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在J ... 
- Eclipse中如何开启断言(Assert),方法有二
		Eclipse中如何开启断言(Assert),方法有二:1.Run -> Run Configurations -> Arguments页签 -> VM arguments文本框中加 ... 
- Java 之 assert (断言)
		我们知道C/C++语言中有断言的功能(assert).在Java SE 1.4版本以后也增加了断言的特性. 断言是为了方便调试程序,并不是发布程序的组成部分.理解这一点是很关键的. 默认情况下,JVM ... 
- Java中assert(断言)的使用
		Java中assert(断言)的使用 1.Eclipse中默认assert(断言)是关闭,开启方式如下: 简单来说:就是设置一下jvm的参数,参数是-enableassertions或者-ea(推荐) ... 
随机推荐
- 查看和杀死进程ps
			$ps -ef #查看执行的进程. $ps -aux | grep java #查看java进程 $sudo kill 进程号 [1] http://www.cnblogs.com/peida/arc ... 
- Android开发——利用Cursor+CursorAdapter实现界面实时更新
			好久没有更新博客了.不是没时间写,而是太懒.而且感觉有些东西没有时间总结,之之后再想写,就想不起来了.晚上新发现一点东西,所以就及时写下来. 最近利用业余时间在看Android的Download模块, ... 
- 6.关键字static
			在java中并不存在全局变量的概念,但是我们可以通过static关键字来实现一个“为全局”的概念,在java中static表示“全局”和“静态”的意思,他可以用来修饰成员变量和方法,也可以用来修饰代码 ... 
- jQuery插件初级练习2答案
			html: $.font($("p"),"30px").html("变化了") jQuery: $.extend({ font:functi ... 
- bootstrap 图片切换
			<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ... 
- 2-Sat小结
			关于2-sat,其实就是一些对于每个问题只有两种解,一般会给出问题间的关系,比如and,or,not等关系,判定是否存在解的问题.. 具体看http://blog.csdn.net/jarjingx/ ... 
- 分形之龙形曲线(Dragon Curve)
			龙形曲线(Dragon Curve)又叫分形龙,是一种自相似碎形曲线的统称,因形似龙的蜿蜒盘曲而得名. 一种简单的生成分形龙的方式是:拿着一条细长的纸带,把它朝下的一头拿上来,与上面的一头并到一起.用 ... 
- CocoaPods的使用(一) 安装
			一.什么是CocoaPods? 前言: 思考如何引入一个第三方框架. 例如: 百度地图SDK.友盟.ShareSDK. 信鸽推送等. 从github或某处下载第三方SDK 工程中导入所需要的SDK的文 ... 
- Sql递归关联情况,With作为开头条件。
			with Test_Recursion(Id,ParentId)AS(select Id,ParentId from [V_KPI_DetailsActivities] where ParentId ... 
- AlexNet详解
			在imagenet上的图像分类challenge上Alex提出的alexnet网络结构模型赢得了2012届的冠军.要研究CNN类型DL网络模型在图像分类上的应用,就逃不开研究alexnet,这是CNN ... 
