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初步使用:断言开启、断言使用的更多相关文章

  1. K:java 断言 assert 初步使用:断言开启、断言使用

    @转自天地悠悠的个人博客 主要总结一下在eclipse中如何使用断言. (一)首先明确: java断言Assert是jdk1.4引入的. jvm 断言默认是关闭的. 断言是可以局部开启的,如:父类禁止 ...

  2. 01 java断言assert初步使用:断言开启、断言使用

    参考文件:http://blog.sina.com.cn/s/blog_59c9412d0100fd55.html 1 说明 java断言assert是jdk1.4引入的. jvm断言默认是关闭的. ...

  3. java 中的断言assert的使用

    一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,它是该版本在Java语言方面最大的革新. 从理论上来说,通过 assertion方式可以证明程 ...

  4. Java断言assert

    public class Welcome{ public static void main(String[] args){ assert false; System.out.println(" ...

  5. java的断言(assert)

    概述 在C和C++语言中都有assert关键,表示断言.在Java中,同样也有assert关键字,表示断言,用法和含义都差不多.在Java中,assert关键字是从JAVA SE 1.4 引入的,为了 ...

  6. Java中的断言assert

    Java陷阱之assert关键字   一.概述   在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多.   二.语法   在J ...

  7. Eclipse中如何开启断言(Assert),方法有二

    Eclipse中如何开启断言(Assert),方法有二:1.Run -> Run Configurations -> Arguments页签 -> VM arguments文本框中加 ...

  8. Java 之 assert (断言)

    我们知道C/C++语言中有断言的功能(assert).在Java SE 1.4版本以后也增加了断言的特性. 断言是为了方便调试程序,并不是发布程序的组成部分.理解这一点是很关键的. 默认情况下,JVM ...

  9. Java中assert(断言)的使用

    Java中assert(断言)的使用 1.Eclipse中默认assert(断言)是关闭,开启方式如下: 简单来说:就是设置一下jvm的参数,参数是-enableassertions或者-ea(推荐) ...

随机推荐

  1. Android自定义视图一:扩展现有的视图,添加新的XML属性

    这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...

  2. command not found Operation not permitted

    mysql -uroot -p  报错误:command not found 因为苹果在OS X 10.11中引入的SIP特性使得即使加了sudo(也就是具有root权限)也无法修改系统级的目录,其中 ...

  3. linux 常用命令(个人记录)

    Linux专家的秘诀:思考-实践-在思考-再实践...linux常用命令:root 管理员用户startx 进入shutdown -h now 立刻关机shutdown -r now 现在重新启动计算 ...

  4. java基础-day13

    第01天 java面向对象 今日内容介绍 u 继承 u 抽象类 第1章   继承 1.1  继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继 ...

  5. JAVA本地读取文件,解决中文乱码问题

    JAVA本地读取文件出现中文乱码,查阅一个大神的博客做一下记录 import java.io.BufferedInputStream;import java.io.BufferedReader;imp ...

  6. hdu 1874 畅通工程 【spfa and dijkstra实现】

    题目 spfa: #include <bits/stdc++.h> using namespace std; const int maxn = 205; const int INF = 0 ...

  7. 4.easyloader.js文件的作用

    1).easyloader.js文件用于加载指定模块,同时它也会加载指定模块所依赖的组件 2).不使用easyloader加载: 在easyui中有一个Parser解析器,它会解析class中的eas ...

  8. MapReduce编程解析

    MapReduce编程模型之案例 wordcount 输入数据 atguigu atguiguss sscls clsjiaobanzhangxuehadoop 输出数据 atguigu 2banzh ...

  9. JAVA的初始化顺序

    这里主要是介绍JAVA的类的初始化顺序,比较基础:主要是以例子演示为主: 例子一: 1 package com.cnblog.GDUTtiantian; 2 3 /** 4 * 5 * @author ...

  10. WebApi使用JWT认证

    https://www.cnblogs.com/wangyulong/p/8727683.html https://blog.csdn.net/kebi007/article/details/7286 ...