Он называется пару раз глубоко в рамках реализации для Promise
в стандартной библиотеке. См. source.
try onComplete(value) catch { case NonFatal(e) => executor reportFailure e }
ExecutionContext
может реализовать reportFailure
выполнить произвольный код на будущее/обещание не удается. Единственная вещь в стандартной библиотеке, которая реализует этот метод: ExecutionContextImpl
, который не находится в общедоступном API, но найден here. Этот класс принимает функцию reporter: Throwable => Unit
. По умолчанию ExecutionContext.Implicits.global
использует ExecutionContext.defaultReporter
, который просто печатает трассировку стека до System.err
.
Если вы хотите настроить поведение, вам может потребоваться определить свой собственный ExecutionContext
. Трудно представить себе сценарий, в котором вы хотите создать какой-то другой побочный эффект, отличный от регистрации трассировки стека или какого-либо другого типа ведения журнала.