Готовый перевод 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
Настройки
Готово:
