This commit is contained in:
wu 2024-10-21 12:21:55 +08:00
parent 8dcc7db635
commit c718d46fa5

View File

@ -4,39 +4,41 @@
### 5.1 Java基础增强(掌握) ### 5.1 Java基础增强(掌握)
#### 5.1.1 Java异常处理 #### 5.1.1 Java异常处理
- **定义**: 异常是在程序执行过程中发生的问题或意外情况。 > `异常`是在程序执行过程中发生的任何非正常情况或问题。它们打断了正常的程序流程,需要特别处理来确保程序的健壮性和可靠性。
- **java异常处理结构**:
**java异常类的继承关系**:
![](./resources/exception-hierarchy.png) ![](./resources/exception-hierarchy.png)
> Throwable类是Java所有错误和异常的父类。 `Throwable`类是所有异常的超类,它不能被实例化。`Throwable`有两个重要的子类:`Exception`和`Error`。
- Throwable: 所有错误和异常的超类。
- Error: 表示合理的应用不应该试图捕获的严重问题。例如,内存溢出等。
- Exception: 表示合理的应用可能想要捕获的条件。异常通常由编程错误之外的情况引发。
> 非检查异常类 **非检查异常 (Unchecked Exceptions)**
>> Error 和 RuntimeException 以及他们的子类 - 包括Error和RuntimeException及其子类。
> - 这些异常通常是由编程错误引起的,如数组索引越界或空指针引用。
>> 通俗得理解就是:这些异常,和自己写的代码逻辑有很大关系,这类异常在编译得时候一般能通过,在程序运行过程中会抛出这些异常 如IndexOutOfBoundsException NullPointerException - 编译器不会强制要求处理这些异常,因此称为“非检查”。
> 检查异常类 **检查异常 (Checked Exceptions)**
>> 除了Error 和 RuntimeException以及他们的子类外的其它异常类 - 除了Error和RuntimeException之外的所有其他异常。
> - 这些异常是程序应该能够预料到并需要处理的,如文件未找到异常。
>> 可查异常虽然是异常状况,但在一定程度上它的发生是可以预计的,而且一旦发生这种异常状况,就必须采取某种方式进行处理。 - 编译器要求要么在调用方法时处理这些异常使用try-catch块要么在方法声明中声明它们可能会抛出这些异常使用throws关键字
这种异常的特点是Java编译器会检查它也就是说当程序中可能出现这类异常要么用try-catch语句捕获它要么用throws子句声明抛出它否则编译不会通过。
- **java异常使用**: **Java异常使用**
关键词: try、catch、finally、throw、throws **关键词:**
* try: 用于标记可能抛出异常的代码块。
* catch: 用于捕获并处理try块中抛出的异常。
* finally: 不管是否有异常发生finally块中的代码总会被执行。
* throw: 用于抛出一个新的异常实例。
* throws: 用于声明一个方法可能会抛出的异常类型。
try-catch-finally: 将可能要出现异常的代码放入try中catch 捕获 try 中的异常,并处理,不管有没有异常finally中的代码都会执行。(finally不是必须) **自定义异常类**
throw: 一般是语句抛出一个异常 创建自定义异常类时可以根据是否需要强制性地进行异常处理来选择继承Exception还是RuntimeException。
- 继承Exception检查异常: 如果希望强制用户处理这个异常可以选择继承Exception。
throws:一般是方法抛出一个异常 - 继承RuntimeException非检查异常: 如果异常是由于编程错误引起的或者不需要强制处理可以继承RuntimeException。
- **自定义异常类**
一般自定义异常会继承Exception或RuntimeException类。
但具体继承哪一个类呢 还是要视情况而定,若继承受检查的异常,会与方法耦合若不抛异常就要try-catch操作不够灵活;
若继承RuntimeException 就相对上面的就简洁多了。
#### 5.1.2 注解(掌握) #### 5.1.2 注解(掌握)