Java 异常类层次结构图概览:
在 Java 中,所有的异常都有一个共同的祖先 包中的 类。 类有两个重要的子类:
- :程序本身可以处理的异常,可以通过 来进行捕获。 又可以分为 Checked Exception (受检查异常,必须处理) 和 Unchecked Exception (不受检查异常,可以不处理)。
- : 属于程序无法处理的错误 ,
我们没办法通过 来进行捕获不建议通过捕获 。例如 Java 虚拟机运行错误()、虚拟机内存不够错误()、类定义错误()等 。这些异常发生时,Java 虚拟机(JVM)一般会选择线程终止。
Checked Exception 即 受检查异常 ,Java 代码在编译过程中,如果受检查异常没有被 或者 关键字处理的话,就没办法通过编译。
除了及其子类以外,其他的类及其子类都属于受检查异常 。常见的受检查异常有:IO 相关的异常、、...。
Unchecked Exception 即 不受检查异常 ,Java 代码在编译过程中 ,我们即使不处理不受检查异常也可以正常通过编译。
及其子类都统称为非受检查异常,常见的有(建议记下来,日常开发中会经常用到):
- (空指针错误)
- (参数错误比如方法入参类型错误)
- (字符串转换为数字格式错误,的子类)
- (数组越界错误)
- (类型转换错误)
- (算术错误)
- (安全错误比如权限不够)
- (不支持的操作错误比如重复创建同一用户)
- 基本概念回顾
- 在 Java 中,异常分为受检异常(Checked Exception)和非受检异常(Unchecked Exception)。受检异常是在编译时期就必须处理的异常,要么使用块捕获,要么在方法签名中使用关键字声明抛出,让调用者来处理。非受检异常(运行时异常)在编译时不需要强制处理。
- 关键字与异常类型的关系
- 通常情况下,关键字用于声明方法可能抛出的受检异常。例如,是受检异常,如果一个方法可能抛出,可以在方法签名中使用关键字声明:
- 然而,关键字也可以用于声明非受检异常。虽然这在语法上是允许的,但从良好的编程实践角度来看,这种做法并不常见。因为非受检异常通常表示程序中的逻辑错误,让调用者去处理这些逻辑错误可能不是最好的选择。例如:
- 总结
- 用关键字声明的异常不一定是受检异常,它可以用于声明任何类型的异常,包括非受检异常。但是在实际编程中,关键字主要用于处理受检异常,对于非受检异常,更倾向于在代码中通过良好的编程逻辑来避免产生,或者在产生异常的地方直接使用块进行处理。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/kjbd-jg/41618.html