异常的重要继承关系
● Throwable 是其它异常类型的顶层父类
● Error 表示无法恢复的错误,例如 OutOfMemoryError 内存溢出、StackOverflowError 栈溢出等
○ 这类异常即使捕捉住,通常也无法让程序恢复正常运行
● Exception 表示可恢复的错误,处理方式有两种
○ 一是自己处理,用 catch 语句捕捉后,可以进行一些补救(如记录日志、恢复初始状态等)
○ 二是用 throw 语句将异常继续抛给上一层调用者,由调用者去处理
● Exception 有特殊的子类异常 RuntimeException,它与 Exception 的不同之处在于
○ Exception 被称之为检查异常,意思是必须在语法层面对异常进行处理,要么 try-catch,要么 throws
○ RuntimeException 和它的子类被称为非检查异常(也可以翻译为字面意思:运行时异常),在语法层面对这类异常并不要求强制处理,不加 try-catch 和 throws 编译时也不会提示错误
● 常见的非检查异常有
○ 空指针异常
○ 算术异常(例如整数除零)
○ 数组索引越界异常
○ 类型转换异常