-1

Koush が作成した人気のある Ion ライブラリの例に従っています。プログレス バーを含むファイルをダウンロードします。彼のサンプルの 1 つから、 を使用してキャンセルを送信できることがわかりdownloading.cancel()ます。

注意:downloadingとして宣言されましFuture<File>た。

cancel()メソッドが呼び出されると、CancellationException. この例外を一般的にキャッチするのではなく、具体的に処理したいと思います。

私の最初の考えは、try / catch ブロックをラップし、次のようなものを使用することです。

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

しかし、彼の例を見ると、onCompleted コールバックが と の 2 つの入力を使用していることがわかりException eますFile 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 に答える