Gre*_*ley 5 java exception-handling exception
如果这是一个愚蠢的问题,请原谅我,但据我所知,必须捕获并处理所有Java异常.例如,像这样会产生编译器错误:
public String foo(Object o) {
if (o instanceof Boolean) {
throw new Exception();
}
return o.toString();
}
Run Code Online (Sandbox Code Playgroud)
因为该方法foo()没有添加throws子句.
然而,这个例子将工作(除非是方法foo()没有一个throws条款或方法bar()没有环绕的使用foo()中try/catch块):
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) {
//...
}
//...
}
Run Code Online (Sandbox Code Playgroud)
最后,有时Java程序有时会由于未处理的异常而崩溃.
这是怎么发生的?
你不必处理所有类型的异常.
但是,继承自java.lang.RuntimeException或者java.lang.Error是所谓的未经检查的异常的异常可以被try-catch构造捕获,但它们不一定是这样.
正如您在API文档中看到的那样java.lang.Error,它不会继承自java.lang.Exception.出于这个原因,它不会被你的try-catch块捕获 - 你只查找java.lang.Exception它的子类.