面试题:简述 Excption 与 Error 包结构 ?

在 Java 中,Exception 和 Error 都是 Throwable 类的子类,用于表示程序运行过程中可能出现的异常或错误。它们的包结构如下:


1. Exception 包结构

  • 包路径java.lang.Exception
  • 分类:
    • 受检异常(Checked Exceptions): 必须显式捕获或声明抛出,否则编译不通过。
      • 例如:IOExceptionSQLExceptionClassNotFoundException
    • 非受检异常(Unchecked Exceptions): 也称为运行时异常,不需要显式捕获或声明抛出。
      • 例如:NullPointerExceptionArrayIndexOutOfBoundsExceptionArithmeticException
  • 常见子类:
    • IOException
    • RuntimeException
    • SQLException
    • InterruptedException

2. Error 包结构

  • 包路径java.lang.Error
  • 特点:
    • Error 表示严重的系统级错误,通常与程序逻辑无关,应用程序无法处理。
    • 不需要显式捕获或声明抛出。
  • 常见子类:
    • OutOfMemoryError: 内存不足错误。
    • StackOverflowError: 栈溢出错误。
    • NoClassDefFoundError: 类定义未找到错误。
    • VirtualMachineError: 虚拟机错误。

3. Exception 和 Error 的区别

特性ExceptionError
是否可恢复通常可以恢复通常不可恢复
是否强制捕获受检异常需要显式捕获或声明抛出不需要显式捕获
来源由程序逻辑或外部环境引起由系统或虚拟机引起
常见场景文件未找到、网络连接失败、空指针异常内存溢出、栈溢出、类加载失败

4. 包结构图

Throwable
├── Exception
│   ├── IOException
│   ├── SQLException
│   ├── RuntimeException
│   │   ├── NullPointerException
│   │   ├── ArrayIndexOutOfBoundsException
│   │   └── ArithmeticException
│   └── ...
└── Error
    ├── OutOfMemoryError
    ├── StackOverflowError
    ├── NoClassDefFoundError
    └── ...

结论

  • Exception 和 Error 都是 Throwable 的子类。
  • Exception 表示程序可以处理的异常,分为受检异常和非受检异常。
  • Error 表示系统级错误,通常无法恢复,程序无法处理。
  • 理解它们的包结构和区别有助于编写健壮的程序。
THE END
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容