在Java中,Exception 和 Error 都继承自 Throwable 类,但它们被用于不同的场景和目的🔊:
Exception❌
概念📑:
Exception 代表那些在程序运行时可能出现的情况,而且这些情况通常可以被程序本身处理。它们通常是由程序的错误或不可预见的情况导致的,通常这些情况不会导致程序出现崩溃现象。
类型🌈:
Checked Exception(检查型异常)🎐
这类异常必须在编译时被捕获(try-catch)或声明抛出(throws)。它们通常反映了可恢复的情况,使用者可以通过适当的代码处理这些异常。例如🌰:IOException 和 SQLException
Unchecked Exceptions(非检查型异常)🎐
这类异常包括运行时异常(RuntimeException及其子类)。它们不需要显式地被捕获或声明抛出。例如🌰:我们常在程序中自定义的BusinessException(自定义异常)、NullPointerException(空指针)、 ArrayIndexOutOfBoundsException(数组越界),通常是我们的逻辑错误或者是我们手动抛出的异常,应用程序可以并且应该设计来捕获和处理异常,以保持程序的稳定性和用户体验。
Error💥
概念📑:Error代表那些通常不由程序来处理的严重问题,比如系统崩溃、虚拟机错误或动态链接失败等。这些错误通常发生在Java运行时系统内部,与应用程序代码的错误相比,它们更严重,往往没有恢复的可能。
常见例子🌰:
OutOfMemoryError(内存不足)、StackOverflowError(栈溢出)、NoClassDefFoundError(找不到类定义)等。
总的来说,开发者应该捕获并处理异常,以防止程序意外终止,提高程序的健壮性。对于错误,通常最好让程序终止,因为继续运行可能会导致更严重的问题。