我正在关注Koush创建的流行离子库的示例:Download a File with a progress bar我可以从one of his samples看到可以使用downloading.cancel()
发送取消。
注意:downloading
被声明为Future<File>
。
调用cancel()
方法时会抛出CancellationException
。我想特别处理这个例外,而不是一般地处理它。
我的第一个想法是包装一个try / catch块,并使用类似的东西:
try {
//...
} catch (CancellationException ce) {
//...
}
但是,如果您查看his example,您会看到onCompleted回调使用了2个输入:Exception e
和File result
。
示例here (line 72)显示了这一点:
if (e != null) {
Toast.makeText(ProgressBarDownload.this, "Error downloading file", Toast.LENGTH_LONG).show()
return;
}
这似乎是try / catch块的替代方法,如果存在异常,则会导致错误。但是我的目的是在CancellationException
被捕获时返回不同的toast消息。
答案 0 :(得分:1)
要单独处理异常,我们可以在抛出的异常e
的实例中查找异常类型。
这是适合我的解决方案:
if (e instanceof CancellationException) {
//CancellationException was found
}