2017-11-03 148 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 */ 
    }