小编典典
Java中的异常均以相同的方式工作。
检查和unchecked异常(这是所有子类之间的差别的RuntimeException)如果该抛出一个checked异常谁调用这个方法具有可尝试的方法/捕获该异常,或宣布自己的方法抛出该异常。
所以,如果我有一种方法:
void throwsACheckedException() throws SomeCheckedException;
叫它的人必须做2件事之一。要么:
try {
throwsACheckedException();
} catch (SomeCheckedException e) {
//do something
}
要么
void someCallingMethod() throws SomeCheckedException { //pass it on
throwsACheckedException();
}
无需声明的未经检查的异常,调用该方法的任何人都不必显式捕获。例如:
void someInnocentLookingMethod() {
throw new NullPointerException("surprise!"); //...extends RuntimeException
}
然后您可以简单地调用它,而不会遇到try / catch的麻烦:
void unsuspectingVictim() {
someInnocentLookingMethod();
}
未经检查的异常通常用于随时可能蔓延到您的事物,因此强迫开发人员尝试/捕获它们会使代码非常乏味(例如,NullPointerException),尽管有些人将事物检查的异常完全视为罪恶:
-)
2020-11-01