Java异常体系
Java异常体系的层次结构
Java异常体系的最顶层是Throwable类,Throwable类是Java语言中所有错误和异常的超类。
Throwable类有两个直接子类:Error和Exception
-
Error类:是程序运行时无法处理的问题,通常是严重的系统问题,如内存溢出(OutOfMemoryError)、栈溢出(StackOverflowError)、虚拟机错误(VirtualMachineError)等。错误无法在代码中捕获和处理。
An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions.
-
Exception类:是程序运行时可以捕获并且处理的问题,通常是由程序逻辑错误或者运行时环境问题引起的。Exception类分为运行时异常(RuntimeException)和非运行时异常(比如IOException、SQLException等)。
The class Exception and its subclasses are a form of Throwable that indicates conditions that a reasonable application might want to catch.
不受检查异常(Unchecked Exception)和检查异常(Checked Exception)
Throwable and any subclass of Throwable that is not also a subclass of either RuntimeException or Error are regarded as checked exceptions.
简单而言,Throwable和Throwable的任何子类,如果不是RuntimeException或Error的子类,都是检查异常。
反之,RuntimeException或Error的子类,都是不受检查异常。
异常处理机制
Java提供了几种处理异常的方式,包括捕获异常、声明异常和抛出异常。
-
捕获异常:使用try-catch语句块来捕获可能抛出异常的代码块。当try块中的代码发生异常时,程序将跳转到匹配的catch块进行处理。
-
声明异常:在方法签名中使用throws关键字声明方法可能抛出的异常。这样,调用该方法的代码就需要处理这些异常,要么通过try-catch捕获,要么继续声明抛出。
-
抛出异常:使用throw关键字显式抛出异常。这通常发生在检测到无法恢复的错误情况时,或者当需要将错误传递给上层调用者处理时。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了