2017-10-09 178 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 
}); 
相關問題