Futures and Promises / Фьючи и Промисы: Exceptions
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Когда асинхронные вычисления выбрасывают неотловенные исключения фьючи, которые с ними связаны переходят в ошибочное состояние. "Ошибочные" фьючи содержат экземпляр Throwable вместо результирующего значения. Фьючи имеют колбек onFailure, который принимает PartialFunction который применяется к Throwable. Следующие особенные исключения ведут себя иначе: 2heoh 09.10.13 в 14:03 |
|
|
1. scala.runtime.NonLocalReturnControl[_] - это исключение содержит значение связанное с возвратом. Обычно return вызывается в теле метода транслируется для вызова этого исключения. Вместо того чтобы хранить этого исключения, в теле фьючи или промиса, в исключении хранится ассоциированное значение. 2heoh 09.10.13 в 14:07 |
||
|
2. ExecutionException - сохраняется когда вычисление прерывается неотловленным InterruptedException, Error или scala.util.control.ControlThrowable. В этом случае причина ExecutionException является неотловленное исключение. Эти исключения пробрасываются в потоке выполнения "ошибочного" асинхронного вычисления. Причина этого в том чтобы предотвратить распространение критических исключений и исключений связанных с управляющей логикой, которые обычно не отлавливаются в клиентском коде и в то же время информировать клиента что вычисление фьючи закончилось ошибкой. 2heoh 09.10.13 в 14:35 |
||
|
См. NonFatal для более точного описания семантики. 2heoh 09.10.13 в 14:42 |
