-1

我正在关注 Koush 创建的流行 Ion 库的示例:下载带有进度条的文件,我可以从他的一个示例中看到可以使用downloading.cancel().

注意:downloading被声明为Future<File>.

当该cancel()方法被调用时,它会抛出一个CancellationException. 我想专门处理这个异常,而不是一般地捕捉它。

我的第一个想法是包装一个 try / catch 块,并使用类似的东西:

try { 
    //...
} catch (CancellationException ce) {
    //...
}

但是,如果您查看他的示例,您会看到 onCompleted 回调使用 2 个输入:Exception eFile result

此处的示例(第 72 行)显示了这一点:

if (e != null) {
    Toast.makeText(ProgressBarDownload.this, "Error downloading file", Toast.LENGTH_LONG).show()
    return;
}

这似乎是 try / catch 块的替代方案,如果存在异常,则该块会概括错误。CancellationException但是,如果被抓到,我的目标是返回不同的吐司消息。

4

1 回答 1

1

要单独处理异常,我们可以在抛出异常的实例中查找异常类型e

这是对我有用的解决方案:

if (e instanceof CancellationException) {
  //CancellationException was found
}
于 2016-11-23T13:17:46.380 回答