java中的异常的继承体系

本文介绍了Java中的异常处理机制,详细解析了Throwable类及其子类Error和Exception的特点与使用方法。文章区分了运行时异常和编译时异常,并阐述了它们在程序中的不同作用。
   Throwable是java中异常和错误的顶层父类,只有继承Throwable类的子类才能够通过throws语句或者java虚拟机抛出去

Throwable的常用方法:

  • String getMessage() 异常信息的简单描述
  • String toString() 异常信息的详细描述 全类名+异常信息
  • void printStackTrace()打印异常信息,打印栈追踪信息

Throwable有两个子类

  • Error类一般表示与虚拟机有关的问题,如系统崩溃、内存溢出、方法调用栈溢出、虚拟机错误等问题,对于出现这样的错误,仅靠程序本身是无法修复的,需要终止程序,修改代码

  • Exception类,表示的是程序可以处理的异常,如空指针异常、数组越界异常、没有元素异常、类型转换异常等等。

Exception 异常的分类:
异常分为两大类:

  • 运行时异常(RuntimeException或者是其子类)
  • 编译时异常(除了运行时异常就是编译时异常)
    运行时异常(RuntimeException)

  • 运行时异常,就是编译通过,运行时出现异常

  • 声明这个方法、调用这个方法都可以不适用throws抛出异常

  • 不受子父类继承关系的影响

    注意:如果出现了运行时异常一般都是选择停止程序,修改代码
    编译时异常( checked Exception)

  • 编译不通过,出现编译异常,Eclipse都会提示

Java中,异常继承体系是基于`Throwable`类构建的。`Throwable`类是所有错误和异常的超类。从`Throwable`派生出两个主要子类:`Error`和`Exception`。 ### 异常继承体系 1. **Throwable**: - 这是Java中所有错误和异常的基类。 2. **Error**: - `Error`及其子类表示严重的、通常是不可恢复的问题,这些问题通常不是由程序处理的。 - 例如:`OutOfMemoryError`、`StackOverflowError`等。 3. **Exception**: - `Exception`及其子类表示程序可以捕获并处理的异常情况。 - 分为两大类: - **Checked Exception**(受检异常):这些异常在编译时必须被显式地处理,否则编译器会报错。例如:`IOException`、`SQLException`等。 - **Unchecked Exception**(非受检异常):这些异常不需要强制处理,通常是由于程序逻辑错误引起的。例如:`NullPointerException`、`ArrayIndexOutOfBoundsException`等。 ### 继承体系图示 ``` Throwable | +--- Error | +--- OutOfMemoryError | +--- StackOverflowError | +--- Exception +--- IOException +--- SQLException +--- RuntimeException +--- NullPointerException +--- ArrayIndexOutOfBoundsException ``` ### 示例代码 以下是一个简单的示例,展示如何处理不同类型的异常: ```java public class ExceptionHierarchyExample { public static void main(String[] args) { try { // 可能抛出异常的代码 readFile(); } catch (IOException e) { System.out.println("Caught an IOException: " + e.getMessage()); } catch (RuntimeException e) { System.out.println("Caught a RuntimeException: " + e.getMessage()); } catch (Throwable e) { System.out.println("Caught a Throwable: " + e.getMessage()); } finally { System.out.println("This will always execute."); } } public static void readFile() throws IOException { if (Math.random() > 0.5) { throw new IOException("File not found"); } else { throw new RuntimeException("Unexpected error"); } } } ``` ### 解释 - `Throwable`是所有异常和错误的父类。 - `Error`表示严重的问题,通常程序不应该尝试去处理它们。 - `Exception`表示程序应该能够处理的异常。 - `IOException`是一个典型的检查型异常,必须在编译时处理。 - `RuntimeException`是非检查型异常,不需要强制处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值