zoukankan      html  css  js  c++  java
  • assert(断言)关键字

    一:assert关键字介绍

    Java在JDK1.4时加入了assert(断言)关键字,一般开发中很少用到;

    assert有两种用法:

    (1)asset booleanValue;

          这里booleanValue是一个必须为真(true)或者假(false)的表达式。如果表达式的结果为true,那么断言为真,并且无任何行动;
          如果表达式为false,则断言失败,则会抛出一个AssertionError对象。这个AssertionError继承于Error对象,
          而Error继承于Throwable,Error是和Exception并列的一个错误对象,通常用于表达系统级运行错误。  

          

    (2)asset condition : stringValse;

      这里condition是和上面一样的,这个冒号后跟的是一个表达式,通常用于断言失败后的提示信息,说白了,它是一个传到AssertionError构造函数的值,如果断言失败,该值被转化为它对应的字符串,并显示出来。

         

    二:如何在Ecplice环境中使assert生效

    1:必须要是JDK1.4之后版本;

    同时,将
    "Use Default Compiler Settings"前的勾去掉。并将下面的
    "Generated .class file compatibility"和"Sourcecompatibility"均选择为1.4以上,才能正确编译。

    2:Ecplice设置JVM启动参数:assert有效:

    在Arguments页面中的"VM Arguments" 中填入-ea或者-enableassertions选项。才能让断言在运行时起作用。

    上图是配置RUN模式的,如果想DEBUG模式也生效,则下图配置启动信息也需要加-ea参数(默认是-da 不生效):

    配置完成之后运行如图:

    第一种方式异常:

    第二种方式异常:(自定义异常信息)

    三:指定某些路径断言有效无效配置

        当执行代码时,使用-ea选项使断言有效,也可以使用-da选项使断言无效(默认为无效)
    同样,也可以通过在-ea或-da后面指定包名来使一个包的断言有效或无效。例如,要使一个com.test包中的断言
    无效,可以使用:
    -da:com.test
    要使一个包中的所有子包中的断言能够有效或无效,在包名后加上三个点。例如:
    -ea:com.test...
    即可使com.test包及其子包中的断言无效。

    四:assert进阶

    因为在运行时默认是关闭assert的,因为开启assert校验,也会损耗一定的性能,并且如果在关键部分的校验使用了assert验证,但是忘记开启assert功能,那么肯定会造成重大的失误,所以在生产环境下的代码,是不建议使用assert功能的,一般都是在测试类里面使用的比较多。

    那么,既然没法在生产环境中使用assert功能,那么有没有替代的assert的组件?

    答案是肯定的,这里面分几种情况:

    (1)在spring环境中,可以直接使用工具类Assert:

    Assert.notNull(obj, "object was null");

    (2)如果不在spring中,在普通的Java项目中可以使用jdk7中自带的Objects工具类:

    Objects.requireNonNull()

    (3)如果觉得Objects工具类功能较弱,可以引入junit工具类里面的Assert类:

    Assert.assertNotNull();

    本文主要介绍了Java中assert关键字的功能和其用法,虽然assert关键字使用起来比较方便,但是由于其自身的缺点,所以不推荐在生产环境中使用,不过我们使用其他的替代方案来完成同样的功能,这一点需要注意。

     

  • 相关阅读:
    确认收货逻辑 根据索引删除 和找到这一项数据 直接从本地进行删除数据(不通过调用接口刷新页面 本地刷新页面)
    页面栈getCurrentPages()=》通过获取(页面栈 传递参数 触发上一个页面的函数 修改数据)==> //通过索引改变数据 ==》 点赞逻辑
    保存图片到本地(分享海报功能)
    点赞功能(手动更新当前项 无状态刷新页面) ==》点赞的时候手动拼接
    省市区选择器的做法
    小程序把按钮做成图片(运用到了分享功能)
    小程序接口封装签名
    util.js(涉及到当前项目的一些公共方法)
    time.js(转为年-月-日 时:分:秒)
    request.js(封装请求文件)
  • 原文地址:https://www.cnblogs.com/HaveChen/p/11453902.html
Copyright © 2011-2022 走看看