我在 Android 示例代码中发现了一个不熟悉的“抛出”用法,如下所示。
public Void handleResponse(HttpResponse response) throws IOException
{
...
}
我只想知道在这种情况下这个“抛出”是如何工作的。我发布了这个,因为很难找到合适的搜索词去谷歌。
我认为您正在混合throws
和throw
.
throws
在方法的签名中表明它可以IOException
在某些情况下抛出一个。
throw new IOException()
将抛出实际的异常。
该throws
关键字可以在每个 Java 程序中看到,try {} catch(){}
如果异常是已检查异常,则强制您将方法调用封装在块中
方法声明后的throws
关键字表示该方法可能会抛出该异常。这意味着任何调用方法都必须确保它们捕获此异常,如下所示:
...
try {
var.handleResponse(response);
catch (IOException e) {
// oops, something went wrong
e.printStackTrace();
}
在函数体的某处,handleResponse()
可能会抛出 IOException。当您调用该函数时,您需要将其包围在try..catch
块中。
IOException
是一个检查异常,因此throws IOException
如果您的方法内的代码可以抛出一个IOException
(并且您没有在方法内捕获它),则需要它。IOException
如果是 RuntimeException(如NullPointerException
),则不需要这样做。也许你应该看看这个问题。
您应该从Java 教程开始。从同一个教程:
所有方法都使用 throw 语句来引发异常。throw 语句需要一个参数:一个可抛出的对象。Throwable 对象是 Throwable 类的任何子类的实例。这是一个 throw 语句的示例。
throw someThrowableObject;