Java提供了三种可抛出结构:受检异常、运行时异常和错误(Error)。
Throwable
—Error:未受检异常。
—Exception
——RuntimeException:未受检异常。
受检异常:如果期望调用者能够适当地恢复,使用受检异常
未受检异常:不需要也不应该被捕获的可抛出结构。适用于不可恢复的情形,继续执行有害无益的场景。大多数的RuntimeException都表示前提违例,即API的用户没有遵守API规范建立的约定。Error往往被JVM保留用于表示资源不足、约束失败,或者其他使程序无法继续执行的条件。
总结:对于可恢复的情况,使用受检的异常;对于程序错误,使用运行时异常。
——参考《Effective Java》