java断言--01--关键字 assert

assert 断言的概念

断言实际上是一种测试机制,它可以规定某个参数或者属性必须要满足某个条件,否则会抛出一个异常,并且程序会中止。

断言的一些特点

  1. 断言只用于开发测试阶段确定程序的内部错误
  2. 断言默认是禁用的,需要手动开启。禁用断言的情况下,类加载器会跳过断言代码
  3. 断言检测失败的时候,会抛出AssertionError异常,程序中止

语法

在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都 将忽略!),如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。

断言的开启

  • Intellij IEDA开启断言:Run->Edit Configurations

在这里插入图片描述

  • 选择要启动的断言的类,然后在右边的VM options里填上 -ea 或者 -enableassertions,然点击确定即可。

在这里插入图片描述

assert关键字语法

1、assert <boolean表达式>

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

2、assert <boolean表达式> : <错误信息表达式>

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

案例 1:

public class Test2 {

    public static void main(String[] args) {
        //断言1结果为true,则继续往下执行

        assert true;

        System.out.println("断言1没有问题,Go!");



        System.out.println("\n-----------------\n");



        //断言2结果为false,程序终止

        assert false : "断言失败,此表达式的信息将会在抛出异常的时候输出!";

        System.out.println("断言2没有问题,Go!");

    }

}

情况一 : 默认执行程序,不开启-ea开关

在这里插入图片描述

情况二 : 开启-ea开关,执行程序:

在这里插入图片描述

案例 2:

public class Hello {
    public static void main(String[] args) {
      int result=add(10 ,10);

     // assert result ==10:"结果10不正确";
        assert result ==20:"结果20不正确";
        assert result ==30:"结果30不正确";

    }

    private  static  int add(int  a,int b){
        return  a+b;
    }
}

在这里插入图片描述

对assert的思考

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

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

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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值