2017-11-03 146 views
4

我是Akka/Scala的新手,正在尝试调试下面的代码。当resultSetParser有一个例外时,它不会抛出它。相反,使用此代码的服务只是永远闲置。Akka流保持空闲,而不是抛出异常

如何让我的服务抛出异常,而不仅仅是在流中等待?在Akka中有没有类似watchException()的函数,我可以在watchTermination()之后调用它,使它在处理流时看到异常?

val chunkSource: Source[ChunkStreamPart, NotUsed] = 
    Source 
    .fromIterator(() => resultSetParser(resultSet) map ChunkStreamPart.apply) 
    .watchTermination()((mat : NotUsed, fut : Future[Done]) => { 
     watchTermination(fut) 
     mat 
    }) 
val chunkEntity = Chunked(ContentTypes.`application/json`, chunkSource) 
+0

可以提供'resultSetParser'和'watchTermination'澄清的签名? –

回答

2

您是否尝试过使用recover

例如(未测试):

Source 
    .fromIterator(() => resultSetParser(resultSet) map ChunkStreamPart.apply) 
    .recover{ 
     case _: RuntimeException => ??? /* Return ChunkStreamPart here */ 
    }