欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Java 核心技术卷 I 学习记录十一

Java 核心技术卷 I 学习记录十一

2026/6/2 3:20:31 来源:https://blog.csdn.net/2401_87797168/article/details/143874398  浏览:    关键词:Java 核心技术卷 I 学习记录十一

Java 核心技术卷 I 学习记录十一

  • 七、异常、断言和日志
    • 4、使用断言
      • 1、断言的概念
      • 2、启用和禁用断言
      • 3、使用断言完成参数检查
      • 4、为文档假设使用断言

七、异常、断言和日志

4、使用断言

在一个具有自我保护能力的程序中,断言很常用。

1、断言的概念

断言机制允许在测试期间向代码中插入一些检査语句。当代码发布时,这些插人的检测语句将会被自动地移走。
Java语言引人了关键字assert。这个关键字有两种形式:

// assert关键字的两种形式:
assert 条件;
// or
assert 条件:表达式;

这两种形式都会对条件进行检测,如果结果为false,则抛出一个AssertionError异常。在第二种形式中,表达式将被传人AssertionError的构造器,并转换成一个消息字符串。

2、启用和禁用断言

在默认情况下,断言被禁用。可以在运行程序时用-enableassertions或-ea选项启用:

java -enableassertions MyApp

在启用或禁用断言时不必重新编译程序。启用或禁用断言是类加载器(class loader)的功能。当断言被禁用时,类加载器将跳过断言代码,因此,不会降低程序运行的速度。

// 也可以在某个类或整个包中使用断言
java -ea:MyClass -ea:com.mycompany.mylib... MyApp// 也可以用选项-disableassertions或-da禁用某个特定类和包的断言:
java -ea:... -da:MyClass MyApp

这条命令将开启MyClass类以及在com.mycompany.mylib包和它的子包中的所有类的断言。选项-ea将开启默认包中的所有类的断言。
启用和禁用所有断言的-ea和-da开关不能应用到那些没有类加载器的“系统类”上。对于这些系统类来说,需要使用-enablesystemassertions/-esa开关启用断言。

3、使用断言完成参数检查

在Java语言中,给出了3种处理系统错误的机制:

  • 抛出一个异常
  • 日志
  • 使用断言

使用断言的时机:

  • 断言失败是致命的、不可恢复的错误。
  • 断言检查只用于开发和测阶段。

不应该使用断言向程序的其他部分通告发生了可恢复性的错误,或者,不应该作为程序向用户通告问题的手段。断言只应该用于在测试阶段确定程序内部的错误位置。

4、为文档假设使用断言

断言是一种测试和调试阶段所使用的战术性工具;而日志记录是一种在程序的整个生命周期都可以使用的策略性工具。
java.Iang.ClassLoader 1.0

  • void setDefaultAssertionStatus( boolean b) 1.4:对于通过类加载器加载的所有类来说,如果没有显式地说明类或包的断言状态,就启用或禁用断言。
  • void setCIassAssertionStatus(String className , boolean b) 1.4:对于给定的类和它的内部类,启用或禁用断言。
  • void setPackageAssertionStatus( String packageName , bool ean b) 1.4:对于给定包和其子包中的所有类,启用或禁用断言。
  • void clearAssertionStatus() 1.4:移去所有类和包的显式断言状态设置,并禁用所有通过这个类加载器加载的类的断言。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词