【Java学习】异常


前言

在Java中,引入了异常的概念,以异常类的形式对一些非正常情况进行封装,通过异常处理机制对程序运行时发生的各种问题进行处理。

正文

Java中的异常类大部分继承自 java.lang.Throwable 类。下面介绍下 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"转换为数字

结语

以上就是异常的介绍啦,感谢阅读~

posted @ 2020-11-14 12:21  肥宅快乐鼠  阅读(82)  评论(0编辑  收藏  举报