我正在遵循库斯创建的流行离子库的示例:下载带有进度栏的文件,我可以从他的一个样本中看到,可以使用downloading.cancel()
。
nb:downloading
被声明为Future<File>
。
称为cancel()
方法时,将其抛出CancellationException
。我想特别处理这个例外,而不是一般捕获它。
我的第一个想法是包裹尝试/捕获块,并使用类似的东西:
try {
//...
} catch (CancellationException ce) {
//...
}
但是,如果您查看他的示例,您会看到on Completed回调使用2个输入:Exception e
和File result
。
这里的样本(第72行)显示了以下内容:
if (e != null) {
Toast.makeText(ProgressBarDownload.this, "Error downloading file", Toast.LENGTH_LONG).show()
return;
}
这似乎是尝试/捕获块的替代方法,如果存在异常,则可以将错误概括。但是,如果发现CancellationException
,我的目标是返回其他吐司消息。
要单独处理异常,我们可以在抛出的例外e
中寻找异常类型。
这是对我有用的解决方案:
if (e instanceof CancellationException) {
//CancellationException was found
}