【简要回答】

回答大纲:

一、RuntimeException(运行时异常)

NullPointerException

ArrayIndexOutOfBoundsException

IllegalArgumentException

IllegalStateException

二、IOException(输入输出异常)

FileNotFoundException

EOFException

SocketException

三、SQLException(数据库异常)

SQLSyntaxErrorException

DataAccessException

四、类加载异常

ClassNotFoundException

最后一段话总结一下通用解决方式。
最后的最后,是一些在结构上分类的补充。


【详细回答】

在Java中一些常见的异常类,可以根据其特性和使用场景进行分类。加粗为使用最高频的三种异常。


RuntimeException(运行时异常):
  • NullPointerException:空指针异常,当对一个对象引用调用方法或访问属性时,对象引用为空。
  • ArrayIndexOutOfBoundsException:数组下标越界异常,当尝试访问数组的不存在的索引时抛出。
  • IllegalArgumentException:非法参数异常,当传递给方法的参数不合法时抛出。
  • IllegalStateException:非法状态异常,当对象处于不允许的状态下调用方法时抛出。

IOException(输入输出异常):
  • FileNotFoundException:文件未找到异常,当尝试打开不存在的文件时抛出。
  • EOFException:文件结束异常,当从数据流读取数据时到达文件末尾时抛出。
  • SocketException:套接字异常,当与套接字相关的操作失败时抛出。

SQLException(数据库异常):
  • SQLSyntaxErrorException:SQL语法错误异常,当执行SQL语句时遇到语法错误时抛出。
  • DataAccessException:数据访问异常,当访问数据库或数据存储出现问题时抛出。

ClassNotFoundException:

类未找到异常,当尝试加载不存在的类时抛出。


通用解决方式:

针对这些异常,我们都会采取提前校验、封装工具类、使用增强语法等方式加以避免。出问题时也会通过 try-catch、日志记录和统一异常处理机制来兜底。


另外的:

●Java 的异常都是派生于 Throwable 类的一个实例,所有的异常都是由 Throwable 继承而来的。
●异常又分为 RuntimeException 和其他异常:
○由程序错误导致的异常属于 RuntimeException
○而程序本身没有问题,但由于像 I/O 错误这类问题导致的异常属于其他异常。
●运行时异常 RuntimeException:
○顾名思义,运行时才可能抛出的异常,编译器不会处理此类异常。比如数组索引越界 ArrayIndexOutOfBoundsException、使用的对象为空 NullPointException、强制类型转换错误 NullPointException、除 0 等等。出现了运行时异常,一般是程序的逻辑有问题,是程序自身的问题而非外部因素。
●其他异常:
Exception 中除了运行时异常之外的,都属于其他异常。也可以称之为编译时异常,这部分异常编译器要求必须处置。这部分异常常常是因为外部运行环境导致,因为程序可能运行在各种环境中,如打开一个不存在的文件,此时抛出 FileNotFoundException。编译器要求Java程序必须捕获或声明所有的编译时异常,强制要求程序为可能出现的异常做准备工作。


Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐