@转自天地悠悠的个人博客

主要总结一下在eclipse中如何使用断言。

(一)首先明确:

java断言Assert是jdk1.4引入的。

jvm 断言默认是关闭的。

断言是可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说“断言不具有继承性”。

断言只适用于复杂的调试过程。

断言一般用于程序执行结果的判断,千万不要让断言处理业务流程。

二)判断eclipse是否开启了断言,代码如下:

public class AssertTest {

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

执行上面代码,如果打印 true说明已经启用了断言,如果为 false 则没有启用断言。

如果没有启用断言,则按按照下面方法开启断言。

(三)eclipse中开启断言

选择菜单:Run ---> Run... ---> 选择 Arguments 选项卡

在 VM arguments 文本框中输入: -ea   注意 中间没有空格,如果输入 -da 表示禁止断言。

然后关闭该窗口,提示保存,然后保存就开启了断言。如下图:

再次执行第二步操作,如果打印true,说明开启断言成功。

如果禁止断言,则按第二步操作中,删除 -ea 或者将 -ea 改为 -da 即可。

(四)断言使用

第 1 种使用方法:

public static void main(String[] args) {
boolean isOk = 1>2;
assert isOk;
System.out.println("程序正常"); }

因为 1>2 显然是错误的,所以执行结果抛出异常:Exception in thread "main" java.lang.AssertionError

如果把 1>2 改为 1<2 则程序能顺利执行,打印 “程序正常”

第 2 种使用方法:

public static void main(String[] args) {
boolean isOk = 1>2;
try{
assert isOk : "程序错误";
System.out.println("程序正常");
}catch(AssertionError err){
System.out.println(err.getMessage());
} }

assert 后面跟个冒号表达式。如果冒号前为 true,则冒号后面的被忽略。

如果冒号前为false,则抛出AssertionError , 错误信息内容为冒号后面的内容,上面程序执行结果就是打印:"程序错误"

(五)有关断言的更多参数(转帖一下):

-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

K:java 断言 assert 初步使用:断言开启、断言使用的更多相关文章

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

    1 说明 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. Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)

    Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇--纯前端多页面) @(HTML/JS) 一般来说,使用vue做成单页应用比较好,但特殊情况下,需要使用多页面也有另外 ...

  2. zzuli 1816: 矩形 排序思维

    1816: 矩形 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 179  Solved: 54 SubmitStatusWeb Board Descr ...

  3. 在外围获取APP的机密信息

    叶孤城原创,转载须授权. 小白:偷窥狂,不,叶城主,怎么还不发起攻击,还在外围搞什么? 叶孤城:闭嘴,能外围解决的问题就不要破解,你以为你会天外飞仙啊! 小白:-- 本文解决一个问题:通过抓包分析出重 ...

  4. Entity Framework Code First+SQL Server,改变聚集索引,提高查询性能

    .net Entity Framework(调研的是Entity Framework 4.0) code first方式生成数据库时,不能修改数据库表的索引,而SQLServer默认会把数据表的主键设 ...

  5. WebStorm10 控制台中文乱码解决方案

    工作时发现无论是使用ctrl+F搜索还是查看提交的注释中文都是口,看的本小白十分蛋疼菊紧,所以抽时间找了方法去搞定它. 首先点击左上角的File,选择Setting 然后选择Appearance &a ...

  6. Ubuntu 16.04 安装wine QQ

    1.进入 http://www.ubuntukylin.com/application/show.php?lang=cn&id=279下载Wine QQ 2.解压压缩包 3.将文件夹中三个de ...

  7. Markdown语法入门

    本文内容参考与这里,本篇文档,用Markdown语法写成. 概述 宗旨 Markdown 的目标是实现「易读易写」. 可读性,无论如何,都是最重要的.一份使用 Markdown 格式撰写的文件应该可以 ...

  8. 两小时搞定C#版超级战舰游戏

    课程简单介绍 游戏开发已然是眼下火星上都非常火的开发技术.而休闲的小游戏超级战舰也是眼下白领中最流行的小游戏.那超级战舰游戏是如何在两个小时高速搞定的呢?休闲类的小游戏高速开发的指南是什么?C#是如何 ...

  9. redmine工作流程总结

    1.需求调研员和測试员新建问题,问题跟踪为支持,指派给产品经理 2.产品经理对收到的问题进行分类处理,功能类型的,改动跟踪状态为功能,指派给自己.是bug类型的,将跟踪类型改动错误类型,指派给技术经理 ...

  10. NanUI 0.4.4发布

    NanUI是一个基于ChromiumFX开源项目的.Net Winform界面库,ChromiumFX是Chromium Embedded Framework的.Net实现.众所周知,Chromium ...