参考:http://www.cnblogs.com/tianxue/p/3925315.html

一、Assert简介

作用:是用于对程序进行调试的,对于执行结构的判断,而不是对于业务流程的判断。(相当于一个if ()语句,如果满足断言的执行程序,如果不满足则抛错误)
使用情形:断言只适用复杂的调式过程。(如果不复杂完全可以用log或者debug代替)
特性:首先assert需要自行开启(jvm断言默认是关闭的,如何开启等会讲解),然后assert不具有继承性(父类禁止断言,子类可以开启断言)
语法:assert 直接加语句,但结果一定要是boolean类型

二、使用assert

①、如何判断自己是否开启断言
原理:如果开启断言,则会调用断言语句。
public static void main(String[] args) {// TODO Auto-generated method stubboolean isOk = false;assert isOk = true;//如果开启则会调用assert,那么isOk就为trueSystem.out.println(isOk);//返回结果:false。一般结果都是返回false,表示assert未开启
}

②、如何开启断言

1、首先打开Run->Run Configurations
2、打开Argument并设置-ea(打开断言:-ea   关闭断言:-da,或者删除-ea)
3、再进行测试一下,如果返回true就表示成功了
③、作用:判断结果
public static void main(String[] args) {// TODO Auto-generated method stubboolean isRight = 1 > 2;
assert isRight;//返回false则会报错,如果为true则继续执行程序<pre name="code" class="java">        System.out.println("程序正常");

}

④、自定义抛出的错误
public static void main(String[] args) {// TODO Auto-generated method stubboolean isRight = 1 > 2;assert isRight:"程序错误";//在:后写自定义的异常System.out.println("程序正常");
}

⑤、抛出的是error不是异常

public static void main(String[] args) {// TODO Auto-generated method stubboolean isRight = 1 > 2;try {assert isRight:"程序错误";//在:后写自定义的异常System.out.println("程序正常");} catch (Exception e) {// TODO: handle exceptione.printStackTrace(e);//该行编译错误:提示没有异常需要抛出}
}

assert的错误是继承自error的,所以需要这样写:

    public static void main(String[] args) {// TODO Auto-generated method stubboolean isRight = 1 > 2;try {assert isRight:"程序错误";//在:后写自定义的异常System.out.println("程序正常");} catch (AssertionError e) {// TODO: handle exceptionSystem.out.println(e.getMessage());//返回值:程序错误。(没错,这就是我们自定义的异常)}}

⑥、设置断言的使用范围
-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

断言(assert)的使用相关推荐

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

    1 说明 java断言assert是jdk1.4引入的. jvm断言默认是关闭的. 断言可以局部开启的,如:父类禁止断言,而子类开启断言,所以一般说"断言不具有继承性". 断言只适 ...

  2. C语言断言assert()函数

    文章目录 断言(assert)的用法 用法总结与注意事项 1)在函数开始处检验传入参数的合法性 2)每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败 ...

  3. 断言(assert)详解

    目录 一.assert定义 二.用法总结与注意事项 四.以下是使用断言的几个原则: 一.assert定义 我一直以为 assert 仅仅是个报错函数,事实上,它居然是个宏,并且作用并非"报错 ...

  4. python断言assert实例_Python断言assert的用法代码解析

    在开发一个程序时候,与其让它运行时崩溃,不如在它出现错误条件时就崩溃(返回错误).这时候断言assert 就显得非常有用. python assert断言是声明布尔值必须为真的判定,如果发生异常就说明 ...

  5. python(11)-if语句,断言assert

    分支语句if 1.if基本语法 2 if语句的嵌套 3 比较运算符号 4 逻辑运算符: 5 整数随机数初应用 6 tip 7.断言assert 1.if基本语法 if语句开发中的应用场景:如果条件成立 ...

  6. python断言assert实例_Python 拓展之断言(assert)

    写在之前 大家好,这是首发在我公众号「Python空间」的第 60 篇文章,欢迎关注,期待和你的交流. 在昨天的文章中(零基础学习 Python 之处理异常)中学习了处理异常的正确姿势,今天我们继续来 ...

  7. 断言(Assert)与异常(Exception)

    断言(Assert)与异常(Exception) 参考文章: (1)断言(Assert)与异常(Exception) (2)https://www.cnblogs.com/lionden/p/Asse ...

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

    主要总结一下在eclipse中如何使用断言. (一)首先明确: java断言Assert是jdk1.4引入的. jvm 断言默认是关闭的. 断言只适用于复杂的调试过程. 断言一般用于程序执行结果的判断 ...

  9. 理解和正确使用Java中的断言(assert)

    理解和正确使用Java中的断言(assert) 一.语法形式:     Java2在1.4中新增了一个关键字:assert.在程序开发过程中使用它创建一个断言(assertion),它的 语法形式有如 ...

  10. java 断言 assert 详解:断言开启、断言使用

    java中的断言Assert的使用 一.背景 二.如何判断是否开启了断言 三.开启断言 四.断言的使用 方法一.assert <boolean表达式> 方法二.assert <boo ...

最新文章

  1. 数据维度爆炸怎么办?详解 5 大常用的特征选择方法
  2. Powershell Module for Netapp Data Ontap
  3. IEnumerable是否应该实现IEnumerable接口
  4. iOS 正则表达式使用的三种方式语法
  5. 如何做好一个开源项目之徽章(二)
  6. gitlab详细安装过程,错误解决方案
  7. Java教程:Java中JVM、JRE和JDK三者有什么区别和联系?
  8. 杭州29岁IT男凌晨突发脑出血!老父亲面对医生急的差点跪下
  9. windows xp下 usb驱动编写
  10. C语言结构体的字节对齐原则
  11. AutoSar之CAN网络管理
  12. 图扑数字孪生数据中心机房,助力产业绿色低碳转型
  13. 国足2-0击败菲律宾,重获出线主动权,下次对战叙利亚做了哪些准备?
  14. Hyper-V 的用途与安装
  15. 深圳软件测试培训:软件生命周期(SDLC)的六个阶段
  16. 【翻译】Xv6 book Chapter 8:File system
  17. 宋丹丹晒年轻旧照 桃眼杏腮被赞美女
  18. object sender,EventArgs e
  19. mysql 复制数据文件_mysql数据库搬家,可以直接复制数据库文件吗
  20. 服务器空间不足的原因有哪些

热门文章

  1. 成都理工大学计算机专业种类,西南交大的计算机专业好还是成都理工大学的好?...
  2. 【Python】逻辑回归变量的显著性分析
  3. 临界区互斥的软件实现方法
  4. Linux node 安装教程
  5. Liblinear使用
  6. 【产品设计】平面设计之框架简析
  7. 前端水印的集中解决方案
  8. 东北大学计算机辅助数控编程b,奥鹏东北大学20秋学期《计算机辅助数控编程》在线作业2-参考答案...
  9. K8S Calico网络插件
  10. 回收站图标如何变成透明的