Perché è l'eccezione inPerché Akka Streams ingoia le mie eccezioni?
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.Source
object TestExceptionHandling {
def main(args: Array[String]): Unit = {
implicit val actorSystem = ActorSystem()
implicit val materializer = ActorMaterializer()(defaultActorSystem)
Source(List(1, 2, 3)).map { i =>
if (i == 2) {
throw new RuntimeException("Please, don't swallow me!")
} else {
i
}
}.runForeach { i =>
println(s"Received $i")
}
}
}
ignorato silenziosamente? Vedo che lo stream si interrompe dopo aver stampato Received 1
, ma non viene registrato nulla. Si noti che il problema non è la configurazione di registrazione in generale, poiché vedo un sacco di output se imposto akka.log-config-on-start = on
nel mio file application.conf
.
Stai buttando via l'eccezione in quanto si ignora il valore di ritorno di 'runForeach'. –
@ViktorKlang grazie per avermelo fatto notare, ho appena aggiornato la mia risposta! –