zoukankan      html  css  js  c++  java
  • JAVA 之 assert 关键字 -- 断言

    public static void main(String[] args) {
    		System.out.println("123");
    		
    		int a = 0;
    		int b = 1;
    		assert a == b; //需显示开启,默认为不开启状态  
    		assert a == b : "执行失败!"; 
    		
    		System.out.println("1234");
    	}
     
    1、assert <boolean表达式>
    如果<boolean表达式>为true,则程序继续执行。
    如果为false,则程序抛出AssertionError,并终止执行。
     
    2、assert <boolean表达式> : <错误信息表达式>
    如果<boolean表达式>为true,则程序继续执行。
    如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。
     
     
    assert关键字用法简单,但是使用assert往往会让你陷入越来越深的陷阱中。应避免使用。笔者经过研究,总结了以下原因:
     
    1、assert关键字需要在运行时候显式开启才能生效,否则你的断言就没有任何意义。而现在主流的Java IDE工具默认都没有开启-ea断言检查功能。这就意味着你如果使用IDE工具编码,调试运行时候会有一定的麻烦。并且,对于Java Web应用,程序代码都是部署在容器里面,你没法直接去控制程序的运行,如果一定要开启-ea的开关,则需要更改Web容器的运行配置参数。这对程序的移 植和部署都带来很大的不便。
     
    2、用assert代替if是陷阱之二。assert的判断和if语句差不多,但两者的作用有着本质的区别:assert关键字本意上是为测试 调试程序时使用的,但如果不小心用assert来控制了程序的业务流程,那在测试调试结束后去掉assert关键字就意味着修改了程序的正常的逻辑。
     
    3、assert断言失败将面临程序的退出。这在一个生产环境下的应用是绝不能容忍的。一般都是通过异常处理来解决程序中潜在的错误。但是使用断言就很危险,一旦失败系统就挂了。
  • 相关阅读:
    Android WebView常见问题及解决方案汇总【很全很实用】
    adb shell dumpsys meminfo [packagename] 输出内容的含义
    Android关于RAM、ROM、SD卡以及各种内存的区别
    每天5分钟玩转容器技术 整理目录
    ubuntu16.04基本设置
    ubuntu镜像快速下载
    vSphere 5.5.0 U1配置问题:主机的快速统计信息不是最新的(转载)
    Vcenter server 5.5安装部署
    SQL Server 2008 R2 数据库安装
    Centos7.3搭建DNS服务器--BIND
  • 原文地址:https://www.cnblogs.com/binbang/p/6386780.html
Copyright © 2011-2022 走看看