<分区>
如果这是一个愚蠢的问题,请原谅我,但据我所知,必须捕获和处理所有 Java 异常。 例如,这样的事情会产生编译器错误:
public String foo(Object o) {
if (o instanceof Boolean) {
throw new Exception();
}
return o.toString();
}
因为 foo()
方法没有添加 throws
子句。
然而,这个例子是可行的(除非方法 foo()
没有 throws
子句或者方法 bar()
没有)在 try/catch
block 中围绕 foo()
的使用:
public String foo(Object o) throws Exception {
if (o instanceof Boolean) {
throw new Exception();
}
return o.toString();
}
public void bar(Object o) {
try {
String s = foo(o);
}
catch (Exception e) {
//...
}
//...
}
最后,有时 Java 程序有时仍会由于未处理异常而崩溃。
这是怎么发生的?