我们都知道异常,在开发中不可避免的,但是你真的了解异常吗,我也是被面试官好好的上了一课,一问三不知,只知道写代码的过程中,报红的代码会让你自动捕捉异常,或者写一些工具类方法给catch一下exception,后面详细讲一下
在java异常体系中,throwable类是所有异常类的根父类,主要分为两个主要子类
-
Throwable
- 作为异常体系的顶层父类,定义了异常处理的基础方法(如
getMessage()、printStackTrace()。 - 仅
Throwable及其子类实例可被throw抛出或catch捕获。
- 作为异常体系的顶层父类,定义了异常处理的基础方法(如
-
Error
- 表示JVM或系统级严重错误(如
OutOfMemoryError),程序通常无法处理。 - 属于非检查型异常(unchecked exceptions)。
- 表示JVM或系统级严重错误(如
3.Exception
程序可处理的异常,分为两类:
RuntimeException(如NullPointerException):非检查型异常
其他检查型异常(如IOException):需显式处理(try-catch或throws)。
继承关系总结:
Throwable
├─ Error(系统错误)
└─ Exception
├─ RuntimeException(运行时异常)
└─ 其他检查型异常
对于异常打印总结:
String getMessage ( ) 返回异常的消息字符串
String toString ( )返回异常的简单消息描述
void printStackTrace ( ) 获取异常类名和异常信息以及异常出现在程序中的
位置,把信息输出到控制台。
1. 编译时异常
在Exception类(所有异常的父类,所有异常都可以捕获)中,除了RuntimeException 类以外,其他子类都是编译时异常。Java 编译器会对编译时异常进行检查,如果出现这类异常就必须对其进行处理,否则程序无法通过编译。
处理编译时异常有两种方式:
使用 try … catch 语句对异常进行捕获处理
使用 throws 关键字 声明抛出异常,由调用者对异常进行处理。
2.运行时异常
RuntimeException 类及其子类都是运行时异常,运行时异常 是在程序运行时,由Java虚拟机自动进行捕获处理,Java编译器不会对异常进行检查。即当程序中出现这类异常时,即使没用 try…catch语句捕获异常,或throws关键字声明抛出异常。程序也能编译通过,只是在运行时可能报错。
运行时异常的形式:
ArithmeticException 算术异常
IndexOutOfBoundsException 索引越界异常
ClassCastException 类型转换异常
NullPointerException 空指针异常
NumberFormatException 数字格式化异常
2260

被折叠的 条评论
为什么被折叠?



