2016-11-22 2 views
-1

Я следую примеру популярной библиотеки Ion, которую создал Koush: Download a File with a progress bar, и я могу видеть от one of his samples, что можно отправить отмену с помощью downloading.cancel().Koush Ion onCompleted callback - handle CancellationException

NB: downloading был объявлен как Future<File>.

При вызове метода cancel() он выбрасывает CancellationException. Я хотел бы обработать это исключение специально, вместо того, чтобы ловить его в целом.

Моя первая мысль, чтобы обернуть попробовать/поймать блок, и использовать что-то вроде:

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

Однако, если вы посмотрите на his example, вы увидите, что обратный вызов OnCompleted использует 2 входа: Exception e и File result.

Образец here (line 72) показывает это:

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

Это, как представляется альтернатива/поймать блок Ьги который Обобщая ошибку, если существует исключение. Однако моя цель - вернуть другое сообщение тоста, если поймал CancellationException.

+0

вы должны написать специальное исключение. – Radhey

ответ

1

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

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

if (e instanceof CancellationException) { 
    //CancellationException was found 
} 
Смежные вопросы