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(推荐) ...
随机推荐
- OkHttp3几个简单的例子和在子线程更新UI线程的方法
okHttp用于android的http请求.据说很厉害,我们来一起尝尝鲜.但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来. 首先需要了解一点,这里说的UI线程和主线程是一回事儿. ...
- mysql问题处理记录
1.使用 navicate 导出 csv 文件用 excel 打开乱码 由于excel默认编码是gbk,而navicate导出数据默认编码是utf-8,因此... 解决办法: 使用WPS打开文件,然后 ...
- Android listview 侧滑 SwipeListView 详解 实现微信,QQ等滑动删除效果
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/28508769 今天看别人项目,看到别人使用了SwipeListView,Goog ...
- Hdu1054 Strategic Game(最小覆盖点集)
Strategic Game Problem Description Bob enjoys playing computer games, especially strategic games, bu ...
- 转载:$(function() {}),即$(document).ready(function(),什么时候执行?以此为准,真理
转载:https://blog.csdn.net/Ideality_hunter/article/details/77935656 $(function() { //执行操作 }); $(functi ...
- 《mysql必知必会》学习_第11章_20180801_欢
第11章:使用数据处理函数. P69 文本处理函数,upper()函数把文本变成大写字体. select vend_name,upper(vend_name) as vend_name_upcase ...
- Scala_数据结构
数据结构 容器(Collection) Scala提供了一套丰富的容器(collection)库,包括列表 (List).数组(Array).集合(Set).映射(Map)等 根据容器中元素的组织方式 ...
- [javascript]jsonp-function 代码段
(function($1454395832823,arr_infoList /**/) { $1454395832823.push(' '); for(var i in arr_infoList) { ...
- [php]PHP_函数收集
//http://php.net/manual/en/control-structures.break.php //break ends execution of the current for, f ...
- 设置cxGrid中RichEdit输入内容的格式
设置cxGrid中RichEdit输入内容的格式 (2013-09-05 23:25:31) 转载▼红鱼儿新浪博客 分类: Delphi 遇到这样的问题,利用cxGrid,将一列定义为RichEd ...