Java异常的分类和类结构图

1.异常的分类

Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。Throwable又派生出Error类和Exception类。

  • 错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。
  • 异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。

Java异常层次结构图如下图所示:

 

       为了方便对于这些可传递对象的管理,Java API中专门设计了java.lang.Throwable类,只有该类子类的对象才可以在系统的异常传递体系中进行。该类的两个子类分别是:

1)Error类 

       该类代表错误,指程序无法恢复的异常情况。对于所有错误类型以及其子类,都不要求程序进行处理。常见的Error类例如内存溢出StackOverflowError等。 

2)Exception类 

       该类代表异常,指程序有可能恢复的异常情况。该类就是整个Java语言异常类体系中的父类。使用该类,可以代表所有异常的情况。 在Java API中,声明了几百个Exception的子类分别来代表各种各样的常见异常情况,这些类根据需要代表的情况位于不同的包中,这些类的类名均以 Exception作为类名的后缀。如果遇到的异常情况,Java API中没有对应的异常类进行代表,也可以声明新的异常类来代表特定的情况。在这些异常类中,根据是否是程序自身导致的异常,将所有的异常类分为两种: 

       a)    RuntimeException及其所有子类 

       该类异常属于程序运行时异常,也就是由于程序自身的问题导致产生的异常,例如数组下标越界异常ArrayIndexOutOfBoundsException等。 该类异常在语法上不强制程序员必须处理,即使不处理这样的异常也不会出现语法错误。 

        b)    其它Exception子类 

该类异常属于程序外部的问题引起的异常,也就是由于程序运行时某些外部问题导致产生的异常,例如文件不存在异常FileNotFoundException等。该类异常在语法上强制程序员必须进行处理,如果不进行处理则会出现语法错误。

2、常见的error类
 

异常类名

用途

LinkageError

动态链接失败

VirtualMachineError

虚拟机错误

AWTError

AWT错误

3、常见运行时异常类

异常类名

用途

ArithmeticException

数学运算异常,比如除数为零的异常

IndexOutOfBoundsException

下标越界异常,比如集合、数组等

ArrayIndexOutOfBoundsException

访问数组元素的下标越界异常

StringIndexOutOfBoundsException

字符串下标越界异常

ClassCaseException

类强制转换异常

NullpointerException

当程序试图访问一个空数组中的元素,或访问一个空对象中的方法或变量时产生的异常。

4、常用的非运行时异常

异常类名

用途

ClassNotFoundException

指定类或接口不存在的异常

IllegalAccessException

非法访问异常

Ioexception

输入输出异常

FileNotFoundException

找不到指定文件的异常

ProtocolException

网络协议异常

SocketException

Socket操作异常

MalformedURLException

统一资源定位符(URL)的格式不正确的异常

借鉴博文:https://www.cnblogs.com/zhangchao0515/p/9613701.html

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java中,异常可以分为三个主要的分类:检查异常(Checked Exception)、运行时异常(Runtime Exception)和错误(Error)。 1. 检查异常(Checked Exception):这些异常在编译时就需要进行处理或者声明抛出,否则代码无法通过编译。常见的检查异常包括IOException、SQLException等。例如: ```java import java.io.FileReader; import java.io.IOException; public class CheckedExceptionExample { public static void main(String[] args) { try { FileReader fileReader = new FileReader("file.txt"); // 其他处理逻辑 } catch (IOException e) { e.printStackTrace(); } } } ``` 2. 运行时异常(Runtime Exception):这些异常是在运行时才会出现的,不需要强制进行处理或者声明抛出。常见的运行时异常包括NullPointerException、ArrayIndexOutOfBoundsException等。例如: ```java public class RuntimeExceptionExample { public static void main(String[] args) { int[] arr = {1, 2, 3}; try { int num = arr[4]; // 越界访问数组 } catch (ArrayIndexOutOfBoundsException e) { e.printStackTrace(); } } } ``` 3. 错误(Error):这些异常表示Java运行时环境中出现了严重的问题,无法通过代码进行处理。常见的错误包括OutOfMemoryError、StackOverflowError等。例如: ```java public class ErrorExample { public static void main(String[] args) { try { recursiveMethod(); } catch (StackOverflowError e) { e.printStackTrace(); } } public static void recursiveMethod() { recursiveMethod(); } } ``` 需要注意的是,运行时异常和错误都不需要强制处理,但是在实际开发中,我们仍然应该根据具体情况进行适当的异常处理,以保证程序的健壮性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值