美文网首页
Assert断言

Assert断言

作者: 让你变好的过程从来都不会很舒服 | 来源:发表于2021-08-29 21:37 被阅读0次

我一直以为 assert 仅仅是个报错函数,事实上,它居然是个宏,并且作用并非"报错"。

在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert() 的用法像是一种"契约式编程",在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个 if 语句:

/**
   * 断言的使用方法一
   */
  public static void useAssertExt1() {
      boolean isOk = 1 > 2;
      assert isOk;
      System.out.println("程序正常");
  }

执行的结果如下:

Exception in thread "main" java.lang.AssertionError
at com.rollercoaster.codecomplete.AboutAssertion.useAssertExt1(AboutAssertion.java:43)
at com.rollercoaster.codecomplete.AboutAssertion.main(AboutAssertion.java:16)

说明:

显然isOk为false,所以抛出AssertionError

/**
   * 断言的第一个例子
   */
  public static void useAssertExt2() {
      boolean isOk = 1 > 2;
      try {
          assert isOk : "程序错误";
          System.out.println("程序正常");
      } catch (AssertionError err) {
          System.out.println(err.getMessage());
      }
  }

运行结果如下:

程序错误

说明

assert后面跟个冒号表达式。如果冒烟前为true,则冒号后面的被忽略,否则抛出AssertionError,错误内容为冒号后面的内容。

按F3查看源代码,如下,可以看到AssertionError是继承自Error,而不是Exception,所以catch部分用Exception是不能捕捉到AssertionError信息的。

// (version 1.7 : 51.0, super bit)
  public class java.lang.AssertionError extends java.lang.Error {...

相关文章

  • 断言NSAssert

    NSAssert与assert NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是...

  • NSAssert断言

    NSAssert与assert NSAssert和assert是断言,主要的差别是assert在断言失败的时候只是...

  • maven tests

    (一)关于断言assert 断言assert与异常exception的区别在于:1、断言用于调试代码2、异常用于捕...

  • Python中如何优雅的使用assert断言

    什么是assert断言 Assert statements are a convenient way to ins...

  • 标准库

    assert.h 断言

  • nodejs学习-基础模块

    assert - 断言 assert 模块提供了一组断言函数,用于验证不变量。 一般服务器校验不使用断言,断言一旦...

  • solidity-9.异常处理

    异常处理 断言assert(bool condition) assert(bool condition),如果条件...

  • Node.js的断言模块assert

    首先先引入断言assert模块 1.assert(value, message), assert.ok(value...

  • Python的调试

    1.使用断言(assert) a = 1 #定义变量1assert a!=0 ...

  • Assert断言

    Assert断言 环境 Python3.7.0 macOS High Sierra 10.13.6 python ...

网友评论

      本文标题:Assert断言

      本文链接:https://www.haomeiwen.com/subject/kkqzaktx.html