异常、断言和日志

处理错误

需要关注的问题

  • 用户输入错误
  • 设备错误
  • 物理限制
  • 代码错误
  1. 异常分类
image.png

派生于RuntimeException的异常包含下面几种情况:

  • 错误的类型转换
  • 数组访问越界
  • 访问null指针
    不是派生于RuntimeException的异常包括
  • 试图在文件尾部后面读取数据
  • 试图打开一个不存在的文件
  • 试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在
  1. 声明受检查异常
    使用throws关键字,在方法的首部同所有的异常类。每个异常类之间用逗号隔开。

  2. 如何抛出异常
    使用throws new Exception();

  3. 创建异常类
    派生于Exception类或派生于Exception的子类

捕获异常

  1. 捕擎天异常
try{
} catch (Exception e){
}
  1. 捕获多个异常
    Java 7以后,在catch子句中可以捕获多个异常. 使用 |

  2. 再次抛出异常与异常链
    在catch子句中,可以改变异常的类型,进行再次抛出

  3. finally子句
    不管异常是否被捕获,finally子句中的代码都被执行。

InputStream in = new FileInputStream("c:\\a.txt");
try{
  try{
  } finally {
  }
} catch(IOException e) {
    //异常处理的语句
}
  1. 带资源的try语句
    前提:资源属于实现了AutoCloseable接口的类
try(Resourse res = ...) {
}
  1. 分析堆栈轨迹元素
    getStackTrace方法,可以得到stackTraceelElement对象的一个数组,可以在你的程序中分析这个对象数组。

使用异常机制的技巧

  1. 异常处理不能代替简单的测试
  2. 不要过分的细化异常
  3. 利用异常层次结构
  4. 不要压制异常
  5. 在检测时,“苛刻”比放任要好
  6. 不要羞于传递异常

使用断言(JDK自带的,基本不使用)

  1. 断言的概念
    断言机制允许在测试期间向代码中插入一些检查语句,使用关键字assert.

  2. 启用和禁用断言
    在默认情况下,断言被禁用。使用java -ea:选项启用

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

  4. 为文档假设使用断言

记录日志

  1. 基本日志
    使用全局日志记录器(global logger)
    Logger.getGlobal().info(、、、);

  2. 高级日志
    日志级别:七种

  • SEVRE
  • WARNING
  • INFO
  • CONFIG
  • FINE
  • FINER
  • FINEST
  1. 修改日志管理器配置

  2. 本地化

  3. 处理器

  4. 过滤器

  5. 格式化器

  6. 记录说明

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容