2017-10-09 182 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 
}); 
相关问题