Koush Ion onCompleted обратный вызов - обрабатывать CancellationException

Я следую примеру популярной библиотеки Ion, которую создал Коуш: скачайте файл с индикатором выполнения, и по одному из его примеров я вижу, что можно отправить отмену, используя downloading.cancel(),

NB: 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 был пойман.

1 ответ

Для индивидуальной обработки исключений мы можем искать тип исключения в экземпляре сгенерированного исключения e,

Это решение, которое работает для меня:

if (e instanceof CancellationException) {
  //CancellationException was found
}
Другие вопросы по тегам