Futures and Promises / Фьючи и Промисы: Exceptions

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

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

2heoh 09.10.13 в 14:03

0

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

2heoh 09.10.13 в 14:07

0

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

2heoh 09.10.13 в 14:35

0

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

2heoh 09.10.13 в 14:42

0
Минутку...