Error and Exception Handling错误与异常处理

2022-09-02 14:29:57

7.2Error and Exception Handling错误与异常处理

1  Error and Exception in Java  JAVA中的错误和异常

2 Exception Handling

– What is Exception?

– Classification of exceptions

– Checked and unchecked exceptions

– How to Throw an Exception

– Creating Exception Classes

– Catching Exceptions

– Rethrowing and Chaining Exceptions

– finally Clause

– The Try-with-Resources Statement

– Analyzing Stack Trace Elements

– Tips for Using Exceptions

1 Error and Exception in Java

内部错误:程序员通常无能为力,一旦发生,想办法让程序优雅的结束

异常:你自己程序导致的问题,可以捕获、可以处理

Error:

User input errors 用户输入错误

Device errors 设备错误

Physical limitations 物理限制

一些典型的错误:

VirtualMachineError:

OutOfMemoryError 内存溢出,JAVA虚拟机不能再为对象分配内存

StackOverflowError 应用递归太深

InternalError JAVA虚拟机的一些内部错误

LinkageError:(类依赖或者不兼容)

 NoClassDefFoundError:尝试加载定义但是无定义

3 Exception Handling

(1) What is Exception?

异常:程序执行中的非正常事件,程序无法再按预想的流程执行

将错误信息传递给上层调用者,并报告“案发现场”的信息

return 之外的第二种退出途径

若找不到异常处理程序,整个系统完全退出

(2) Classification of exceptions异常分类

异常的两个分支:

RuntimeException运行时异常:由程序员在代码里处理不当造成(数组越界,空指针,。。)

 Those that do not. 其他异常:由外部原因造成

运行时异常,是程序源代码中引入的故障所造成的(可以避免)

非运行时异常,是程序员无法完全控制的外在问题所导致的(不可避免)

(3) Checked and unchecked exceptions

--这是从异常处理机制的角度所做的分类。异常被谁 check ? —— 编译器、程序员

1)Checked Exception

编译器可帮助检查你的程序是否已抛出或处理了可能的异常

你要不就处理异常,要不就告诉编译器你的方法丢出throw那个异常

 一些术语:

Try,catch,finally,throws,throw

(throws) 声明“本方法可能会发生 XX 异常”

(throw) 抛出 XX 异常

(try, catch, finally) 捕获并处理 XX 异常

2)Unchecked Exception:Programming error, other unrecoverable failure(Error + RuntimeException)

--Errors and Runtime Exceptions are not checked by compiler

--你只能重写代码

在编程和编译的时候, IDE 与编译器均不会给出任何错误提示

当要决定是采用 checked exception 还是 unchecked exception 的时候,问一个问题:“如果这种异常一旦抛出, client 会做怎样的补救?

尽量使用 unchecked exception 来处理编程错误

错误可预料,但无法预防,但可以有手段从中恢复,此时使用 checked exception 。

@throws

(4) Declaring Checked Exceptions by throws

异常”也是方法和client 端之间 spec 的一部分,在 post-condition 中刻画

你所调用的其他函数抛出了一个 checked exception—— 从其他函数传来的异常

当前方法检测到错误并使用 throws 抛出了一个 checked exception—— 你自己造出的异常

此时需要告知你的 client 需要处理这些异常

程序员必须在方法的 spec 中明确写清本方法会抛出的所有 checked exception ,以便于调用该方法的 client 加以处理

不要抛出Error或者Unchecked Exception

(5) How to Throw an Exception

或者

找到一个能表达错误的Exception类/或者构造一个新的 Exception 类

构造 Exception 类的实例,将错误信息写入

抛出它

(6) Creating Exception Classes

如果JDK提供的 exception 类无法充分描述你的程序发生的错误,可以创建自己的异常类

(7) Catching Exceptions

  • 作者:qq_42766619
  • 原文链接:https://blog.csdn.net/qq_42766619/article/details/92439023
    更新时间:2022-09-02 14:29:57