目录
前言
在Java中,引入了异常的概念,以异常类的形式对一些非正常情况进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理。
正文
Java中的异常类大部分继承自 java.lang.Throwable 类。下面介绍下 Throwable 类的继承体系:
(一)Throwable 类的继承体系
1.子类——Error类
错误类。它表示Java运行时产生的系统内部错误或资源好近的错误,比较严重,仅靠修改程序本身无法恢复执行。
2.子类——ExceptIon类
异常类。它表示程序本身可以处理的错误,在开发Java程序中进行的异常处理,都是针对Exception类及其子类。
(除了RuntimeException类,Exception类下所有其他子类都用于表示编译时异常)
3.常用方法
方法声明 | 功能描述 |
---|---|
String getMessage() | 返回此 throwable 的详细消息字符串 |
void printStackTrace() | 将此 throwable 及其追踪输出到标准错误流 |
void printStackTrace(PrintStream s) | 将此 throwable 及其追踪输出到指定的输出流 |
(二)try…catch 和 finally
1.异常捕获
由于发生了异常,程序立即终止,无法继续向下执行;为了解决这样的问题,Java中提供了一种处理异常的方式,称为异常捕获。通常用 try…catch 语句。
Try { 代码逻辑 } catch ( Exception e ) { 异常处理逻辑 }
Try { 代码逻辑 } catch ( 具体的异常Exception e ) { 异常处理逻辑 } catch ( 具体的异常 )
说明
- 在 try 代码块中编写肯发生异常的语句;
- 在 catch 代码块中编写针对异常处理的代码;
- 当 try 代码块中的程序发生了异常,系统会将这个异常的信息封装成一个异常对象,并将这个对象传递给 catch 代码块。catch 代码块需要一个参数指明它所能接收的异常类型,这个参数的类型必须是 Exception 类及其子类.
注意
- 在 try代码块中,发生异常语句后面的代码不会被执行。( finally 中的代码仍会执行)
- finally 中的代码块有一种情况不会执行:在 try…catch 中执行了 System.exit(0) 语句。
- 当使用多重的catch时,一定要注意相关异常的顺序,将子类放在最前面的catch,父类放在后面的catch。
System.exit(0): 表示退出当前的 Java虚拟机,虚拟机停止后任何代码都不会再执行。
执行过程中可能存在的情况:
- 正常执行,只执行try中的代码
- 遇到异常,会处理try中异常代码之前的逻辑,后面的逻辑不会执行,最后会执行catch中的代码
- 使用多重catch时,会遇到异常子类不匹配的情况,此时依然会报错,因此建议在catch的最后将所有的异常的父类写上
2.throws 关键字
语法
修饰符 返回值类型 方法名([参数1,参数2…]) throws ExceptionType1[,ExceptionType2…]{
}
(三)常见异常类型
异常类型 | 说明 |
---|---|
Exception | 异常层次结构的父类 |
ArithmeticException | 算数错误 如:0作除数 |
ArrayIndexOutOfBoundsException | 数组下标越界 |
NullPointerException | 尝试访问null对象成员 |
ClassNotFoundException | 不能加载所需的类 |
IIIegalArgumentException | 方法接收到非法参数 |
ClassCastException | 对象强制类型转换出错 |
NumberFormatException | 数字格式转换异常 如:将"abc"转换为数字 |
结语
以上就是异常的介绍啦,感谢阅读~