avatar

一条在知识海洋的咸鱼

这个家伙很懒,啥也没有留下😋

  • 首页
  • Linux
  • OCJP
  • Java核心技术卷
  • J2EE相关标准
  • 深入理解Java虚拟机
  • NIO与SOcket编程技术指南
  • Java多线程编程核心技术
  • Redis开发与运维
  • Spring Cloud Alibaba 微服务原理与实践
  • DevOps
  • Docker
  • MySQL必知必会
  • AI自学路线
  • Spring Boot 编程思想(核心篇)
主页 异常、断言和日志
文章

异常、断言和日志

发表于 2020-11-28 更新于 2026-06- 10
作者 Administrator
7~9 分钟 阅读
  • 异常、断言和日志
    • 处理错误
      • 异常分类
      • 派生自RuntimeException包括
      • 不派生自RuntimeException包括
      • 非检查型异常和检查型异常
      • 声明检查型异常
    • 使用断言
      • 断言的概念
      • 启用和禁用断言
    • 日志
      • 基本日志
      • 高级日志

异常、断言和日志

处理错误

程序中可能出现的错误和类型

  • 用户输入错误
  • 设备错误
  • 物理限制
  • 代码错误
    如果某个方法不能够采用正常的途径完成它的任务,可以通过另外一个路径退出方法。在这种情况下方法并不返回任何值,而是抛出一个封装了错误信息的对象,且这个方法将会退出。

异常分类

异常对象派生自Throwable类的一个实例。

  • Throwable派生Error和Exception。
  • Error:java运行时系统内部错误和资源耗尽错误。
  • Exception派生出RuntimeException和其他类异常。
  • 由编程错误导致的异常属于RuntimeException,如果程序本身没有问题,但由于像I/O错误这类问题导致的异常属于其他异常。
    如果出现RuntimeException一般都属于程序员编程问题

派生自RuntimeException包括

  • 数组的强制类型转换
  • 数组访问越界
  • 访问null指针

不派生自RuntimeException包括

  • 超过文件末尾继续读取数据
  • 打开一个不存在的文件
  • 根据字符串对象查找不存在的Class对象

非检查型异常和检查型异常

  • 非检查型异常:派生于Error或RuntimeException类的所有异常
  • 检查型异常:所有其他的异常

声明检查型异常

  • 一个方法必须声明所有可能抛出的检查型异常,而非检查型异常要么在你的控制之外(Error),要么是由从一开始应该避免的情况所导致的(RuntimeException)
  • 如果在子类中覆盖了超类的一个方法,子类方法中声明的检查型异常不能比超类方法中声明的异常更通用。(子类方法可以抛出更特定的异常,或者根本不抛出任何异常,如果超类方法没有抛出任何检查型异常,子类也不能抛出任何检查型异常)

使用断言

断言的概念

  • 断言机制允许在测试期间向代码中插入一些检查,而在生产代码中会自动删除这些检查(如果在程序中含有大量这种检查,程序运行起来慢很多)。

启用和禁用断言

  • 在默认情况下,断言是禁用的。不必重新编译程序来启用或禁用断言。启用或禁用断言是类加载器的功能

日志

该部分日志API使用的是java自带的api,并非第三方Log4J 2或者SLF4J等API。
日志API使用的优点()

  • 可以很容易的取消全部日志记录,或者仅仅取消某个级别以下的日志,而且可以很容易地再次打开日志开关。
  • 可以很简单地禁止日志记录,因此,将这些日志代码留在程序中地开销很小
  • 日志记录可以被定向到不同地处理器,如在控制台显示、写至文件,等等。
  • 日志记录器和处理器都可以对记录进行过滤。过滤器可以根据过滤器实现器指定地标准丢弃那些无用地记录项。
  • 日志记录可以采用不同地方式格式化,例如,纯文本或XML。
  • 应用程序可以使用多个日志记录器,它们使用与包名类似的有层次结构的名字,例如,com.mycompany.myapp。
  • 日志系统的配置由配置文件控制。

基本日志

要生成简单的日志记录,可以使用全局日志记录器(global)

高级日志

通常日志有一下7个级别。

  • SEVERE
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST
Java核心技术卷
许可协议: 
分享

相关文章

11月 28, 2020

集合

11月 28, 2020

泛型程序设计

泛型程序设计为什么要使用泛型设计程序泛型程序设计在有泛型类之前,必须使用Object编写适用于多种类型的代码,这很不安全。泛型类和泛型方法有类型参数,这使得它们可以准确地描述用特定类型实例化时会发生什么。为什么要使用泛型设计程序泛型程序设计:编写的代码可以对多种不同类型的对象重用。//TODO 泛型

11月 28, 2020

异常、断言和日志

异常、断言和日志处理错误异常分类派生自RuntimeException包括不派生自RuntimeException包括异常、断言和日志处理错误程序中可能出现的错误和类型用户输入错误设备错误物理限制代码错误如果某个方法不能够采用正常的途径完成它的任务,可以通过另外一个路径退出方法。在这种情况下方法并不

下一篇

泛型程序设计

上一篇

接口、lambda表达式与内部类

最近更新

  • 55 异常兜底:工具失败、非法输出、空检索与超时
  • 54 Agent Memory:短期记忆、用户上下文与摘要
  • 53 Human-in-the-loop:让关键动作暂停、确认与恢复
  • 52 工单 Tool:字段校验、创建结果与失败补偿
  • 51 订单 Tool:Mock、鉴权、状态解析与脱敏

热门标签

java基础 微服务 maven Spring Tomcat DDD Linux Linux基础 SQL基础 数据结构算法

目录

©2026 一条在知识海洋的咸鱼. 保留部分权利。

使用 Halo 主题 Chirpy