java的断言(assert)详解编程语言
断言(assert)的语法很简单,有两种写法:1、assert boolean表达式
如果 boolean表达式 为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。
2、assert boolean表达式 : 错误信息表达式
如果 boolean表达式 为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入 错误信息表达式 。
代码示例 根据断言的语法规则,如果 boolean表达式 为true,则程序继续执行。如果为false,则程序抛出AssertionError,并终止执行。
public class AssertDemo { public static void main(String args[]) { //断言1结果为true,则继续往下执行 assert true; System.out.println("断言1没有问题,Go!"); System.out.println("******************"); //断言2结果为false,程序终止 assert false : "断言失败,此表达式的信息将会在抛出异常的时候输出!"; System.out.println("断言2没有问题,Go!");
assert关键字用法简单,但是使用assert往往会让你陷入越来越深的陷阱中。应避免使用。我也是最近看之前写的项目,在做登录的时候,经常莫名其妙的退出,看到一段断言。
1、assert关键字需要在运行时候显式开启才能生效,否则你的断言就没有任何意义。而现在主流的Java IDE工具默认都没有开启-ea断言检查功能。这就意味着你如果使用IDE工具编码,调试运行时候会有一定的麻烦。并且,对于Java Web应用,程序代码都是部署在容器里面,你没法直接去控制程序的运行,如果一定要开启-ea的开关,则需要更改Web容器的运行配置参数。这对程序的移植和部署都带来很大的不便。
2、用assert代替if是陷阱之二。assert的判断和if语句差不多,但两者的作用有着本质的区别:assert关键字本意上是为测试调试程序时使用的,但如果不小心用assert来控制了程序的业务流程,那在测试调试结束后去掉assert关键字就意味着修改了程序的正常的逻辑。
3、assert断言失败将面临程序的退出。这在一个生产环境下的应用是绝不能容忍的。一般都是通过异常处理来解决程序中潜在的错误。但是使用断言就很危险,一旦失败系统就挂了。
在eclipse中,必须开启相关设置。具体在偏好设置,选择Installed JREs,选择相关版本,点击edit,在Default VM arguments里面输入-ea就可以了。
相关文章
- Java基础学习笔记二十三 Java核心语法之反射详解编程语言
- Java操作日期时间的工具类详解编程语言
- java实现发送邮件可多个附件内嵌图片-commons-email使用详解编程语言
- java中数字与ASCII码的相互转换的代码详解编程语言
- 使用java NIO进行读文件详解编程语言
- RSA非对称加密解密Java实例代码详解编程语言
- java基础学习总结——static关键字详解编程语言
- Java生成对应字符串的MD5密码模块详解编程语言
- JAVA环境变量配置详解(Windows)编程语言
- Java中使用poi导入、导出Excel详解编程语言
- Java 程序初始化过程详解 -转编程语言
- Java数据结构和算法(十五)——无权无向图详解编程语言
- Java 多线程详解(三)——线程的同步编程语言
- Java算法基础之快速排序算法详解编程语言
- java.lang.ClassNotFoundException: org.apache.commons.discovery.tools.DiscoverSingleton详解编程语言
- Java实现将文件或者文件夹压缩成zip详解编程语言
- java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类详解编程语言
- Java经典实例:使用DateFormatter来格式化日期时间详解编程语言
- Java基础-面向对象详解编程语言
- java开发_图片截取工具实现原理