主要总结一下在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 Configurations...---> 选择 Arguments 选项卡
在 VM arguments 文本框中输入: -ea 注意:中间没有空格,如果输入 -da 表示禁止断言。

然后关闭该窗口,然后保存就开启了断言。

(四)断言使用

assert关键字语法很简单,有两种用法:

1、assert <boolean表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。

2、assert <boolean表达式> : <错误信息表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。

以下转自:Java陷阱之assert关键字

四、陷阱

assert关键字用法简单,但是使用assert往往会让你陷入越来越深的陷阱中。应避免使用。笔者经过研究,总结了以下原因:

1、assert关键字需要在运行时候显式开启才能生效,否则你的断言就没有任何意义。

而现在主流的Java IDE工具默认都没有开启-ea断言检查功能。这就意味着你如果使用IDE工具编码,调试运行时候会有一定的麻烦。

并且,对于Java Web应用,程序代码都是部署在容器里面,你没法直接去控制程序的运行,如果一定要开启-ea的开关,

则需要更改Web容器的运行配置参数。这对程序的移植和部署都带来很大的不便。

2、用assert代替if是陷阱之二。assert的判断和if语句差不多,但两者的作用有着本质的区别:

assert关键字本意上是为测试调试程序时使用的,但如果不小心用assert来控制了程序的业务流程,

那在测试调试结束后去掉assert关键字就意味着修改了程序的正常的逻辑。

3、assert断言失败将面临程序的退出。这在一个生产环境下的应用是绝不能容忍的。

一般都是通过异常处理来解决程序中潜在的错误。但是使用断言就很危险,一旦失败系统就挂了。

五、对assert的思考

assert既然是为了调试测试程序用,不在正式生产环境下用,那应该考虑更好的测试JUint来代替其做用,

JUint相对assert关键的所提供的功能是有过之而无不及。当然完全可以通过IDE debug来进行调试测试。

在此看来,assert的前途一片昏暗。

因此,应当避免在Java中使用assert关键字,除非哪一天Java默认支持开启-ea的开关,这时候可以考虑。

对比一下,assert能给你带来多少好处,多少麻烦,这是我们选择是否使用的的原则。

java 断言 assert 初步使用:断言开启、断言使用相关推荐

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

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

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

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

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

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

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

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

  5. Java中的断言(assert)

    为什么80%的码农都做不了架构师?>>>    一.语法形式:     Java2在1.4中新增了一个关键字:assert.在程序开发过程中使用它创建一个断言(assertion), ...

  6. Java 之 assert (断言)

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

  7. java 断言assert_java断言assert的使用

    一.assert的开启和关闭 因为JVM默认是不启动assert的.因此,你可以使用标记–enableassertions(缩写-ea)来开启断言功能.同样,你也可以使用标记–disableasser ...

  8. Java: 断言(assert)

    断言(assert)语句一半用于程序不准备通过捕获异常来处理的错误.例如:账号交易时,对于支出的金额为正数(收入+支出=纯收入)或者收入的金额为负数,程序必须立即停止执行,同时发现错误,当正式收益时, ...

  9. java断言assert的概念_断言(assert)简介

    java中的断言assert的使用 一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,他是该版本再Java语言方面最大的革新. 从理论上来说,通 ...

最新文章

  1. c51矩形波输出汇编语言,51单片机汇编语言编程:用定时器控制输出矩形波
  2. 反弹和补遗:再论Bjarne Stroustrup的基于对象的含义
  3. android art虚拟机安装,Android中art虚拟机启动流程
  4. pSort CodeForces - 28B(并查集)
  5. idea 代码第一次上传git_如何使用IDEA将项目代码首次上传至GitHub,并持续推送?...
  6. 弄断过河电缆_你说的是:剪断电缆线
  7. 使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)
  8. Varnish缓存代理简介与配置
  9. iOS第三方地图-百度地图定位的封装
  10. FreeTextBox 3.1.6 的实践总结和几个问题
  11. mysql导出数据dump_MYSQL使用mysqldump导出表的部分数据
  12. mac 使用js打开计算器_Numi for Mac(mac计算器软件)
  13. 没钱发工资?当着董事长总经理是好玩的,不用负责?
  14. 【报表福利大放送】100余套报表模板免费下
  15. 2017年中国智能卡行业发展现状分析及市场发展前景预测
  16. 实用技巧(二)——文本工具、自由变换
  17. “破镜”真的没办法“重圆”了吗?
  18. 信息系统项目管理师核心考点(五十五)配置管理员(CMO)的工作
  19. 华为服务器网口ip配置文件,服务器远程ip配置文件
  20. 职业规划测试软件,生涯规划工具

热门文章

  1. 赤纬转换为度 (字符切割和字符类型转换 string→double)
  2. Socaverse正在推动体育文化成为Web3发展的新驱动力
  3. Unity3D中Rigidbody.velocity和Addforce的区别
  4. matlab中(:)的部分使用
  5. js回调函数的用途与写法
  6. MTK开发之—添加aw21024 i2c设备驱动
  7. python正则表达式(一)
  8. 计算机定时开机关机设置,电脑定时开关机,小编教你怎么设置电脑定时开关机...
  9. 【笔记/后端】谷粒商城基础篇
  10. 基本数据类型 java