这意味着您要调用的方法已使用
throws指令声明了从
Exception类派生的异常。当以这种方式声明一个方法时,您将被迫使用一个
try/catch块来处理该异常,或者将一个相同的
throws(对于相同的异常或超类型)语句添加到您的方法声明中。
一个例子。
我想
foo在我的方法中调用某个方法
bar。
这是
foo的定义:
public static void foo(String a) throws Exception { // foo does something interesting here.}我想打电话
foo。如果我只是这样做:
private void bar() { foo("test");}…然后我会得到您遇到的错误。
foo向世界宣告它真的可能决定扔一个,
Exception而您最好准备好应对它。
我有两个选择。我可以
bar按如下方式更改的定义:
private void bar() throws Exception { foo("test");}现在,我公开了自己的警告,警告我的方法或调用的某些方法可能会引发
Exception方法用户应处理的警告。由于我已经将方法的调用者的责任交给了我,因此我的方法不必处理异常本身。
如果可以的话,通常最好自己处理异常。这使我们进入第二种选择
try/catch:
private void bar() { try { foo("test"); } catch(Exception e) { Log.wtf("MyApp", "Something went wrong with foo!", e); }}现在,我已经处理了潜在的
Exception被抛出
foo,编译器在抱怨。既然已经处理过了,所以我不需要
throws在我的
bar方法中添加指令。



