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
}