2017-10-09 5 views
1

私は別のスレッドで実行されている関数を持っています。この関数を呼び出すコードは、その結果を待つことはありません。他のスレッドでスローされた例外をログに記録する方法を強制するには?

def sendEmail(email: String): Future[Unit] = { 
    ... 
} 

def registration: Future[User] = { 
    ... 
    // I do not want to wait for result of this function, just fire email sending 
    // in seprate thread and continue 
    sendEmail(email) 
    ... 
    // Do another job 
} 

問題は何かがsendEmail機能に間違っていた場合、私はログファイルにこの例外を見たいということです。 ここにいくつかの例外がスローされると、ログファイルとコンソール出力は空になります。

別のスレッドから例外をログに記録する方法はありますか?

P.S:私はsendEmailに手動で例外をログに記録したいのですが、それをログに記録するプレイフレームワークを強制しません。一般的に

答えて

1

、あなたは非常にブロックで例外をラップします。 Javaでは、それは次のようなものです:

foobar.thenComposeAsync(arg -> { 
    sendEmail(); 
}).exceptionally(throwable -> { 
    // Do logging 
}); 
関連する問題