Готовый перевод Futures and Promises / Фьючи и Промисы: Exceptions

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

Когда асинхронные вычисления выбрасывают неотловенные исключения фьючи, которые с ними связаны переходят в ошибочное состояние. "Ошибочные" фьючи содержат экземпляр Throwable вместо результирующего значения. Фьючи имеют колбек onFailure, который принимает PartialFunction который применяется к Throwable. Следующие особенные исключения ведут себя иначе:

1. scala.runtime.NonLocalReturnControl[_] - это исключение содержит значение связанное с возвратом. Обычно return вызывается в теле метода транслируется для вызова этого исключения. Вместо того чтобы хранить этого исключения, в теле фьючи или промиса, в исключении хранится ассоциированное значение.

2. ExecutionException - сохраняется когда вычисление прерывается неотловленным InterruptedException, Error или scala.util.control.ControlThrowable. В этом случае причина ExecutionException является неотловленное исключение. Эти исключения пробрасываются в потоке выполнения "ошибочного" асинхронного вычисления. Причина этого в том чтобы предотвратить распространение критических исключений и исключений связанных с управляющей логикой, которые обычно не отлавливаются в клиентском коде и в то же время информировать клиента что вычисление фьючи закончилось ошибкой.

См. NonFatal для более точного описания семантики.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/44566/176069

Переводчики: 2heoh

Настройки

Готово:

100.00% КП = 1.0