Java核心技术卷感悟:第七章 异常、断言


对于异常情况, 例如, 可能造成程序崩溃的错误输入,Java 使 用 一 种 称 为 异 常 处 理的错误捕获机制处理。假设在一个 Java 程序运行期间出现了一个错误。这个错误可能是由于文件包含了错误 信息,或者网络连接出现问题造成的,也有可能是因为使用无效的数组下标, 或者试图使用 一个没有被赋值的对象引用而造成的。用户期望在出现错误时, 程序能够采用一些理智的行 为。

  1. 异常处理的任务就是将控制权从错误产生的地方转移给能够处理这种情况的错误处理 器。程序中可能会出现的错误和问题:
  2. 用户输入错误
  3. 设备错误
  4. 物理限制,磁盘满了,可用存储空间已被用完
  5. 代码错误,程序方法有可能无法正确执行。
  6. Error 类层次结构描述了 Java 运行时系统的内部错误和资源耗尽错误。 应用程序不应该 抛出这种类型的对象。 如果出现了这样的内部错误, 除了通告给用户,并尽力使程序安全地 终止之外, 再也无能为力了。这种情况很少出现。
  7. 在设计 Java 程序时, 需要关注 Exception 层次结构。 这个层次结构又分解为两个分支: 一个分支派生于 RuntimeException ; 另一个分支包含其他异常。
  8. 由 程序错误导致的异常属于 RuntimeException ; 而程序本身没有问题, 但由于像 I/O 错误这类 问题导致的异常属于其他异常(编译异常)。
  9. 在程序中,可能会遇到任何标准异常类都没有能够充分地描述清楚的问题。 在这种情 况下,创建自己的异常类就是一件顺理成章的事情了。我们需要做的只是定义一个派生于 Exception 的类,或者派生于 Exception 子类的类。
  10. 只要将其抛出就不用理 踩了。当然, 有些代码必须捕获异常。如果某个异常发生的时候没有在任何地方进行捕获,那程序就会终止执行,并在控制台 上打印出异常信息, 其中包括异常的类型和堆栈的内容。要想捕获一个异常, 必须设置 try/catch语句块。
  11. 在一个 try 语句块中可以捕获多个异常类型,并对不同类型的异常做出不同的处理。
  12. 当代码抛出一个异常时, 就会终止方法中剩余代码的处理,并退出这个方法的执行。
  13. 异常处理不能代替简单的测试、不要过分地细化异常、 利用异常层次结构、不要压制异常、在检测错误时,“ 苛刻 ” 要比放任更好、不要羞于传递异常
  14. 在一个具有自我保护能力的程序中, 断言很常用。当希望进行检查, 以避免让“ 不是一个数” 的数值参与计算操作。主动可以抛 出一个异常。断言机制允许在测试期间向代码中插入一些检査语句,如果结果为 false, 则抛出一个 AssertionError 异常。


0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP