2016-05-05 181 views
0

我以前的错误处理功能:堆栈跟踪错误处理程序,并承诺错误处理程序

function onError(message, source, lineno, colno, error) { sendRequestToSendMail(arguments) } 
window.onerror = onError 

我也承诺异步任务,我想赶上他们的异常。我不需要重复自己喜欢的:

doSomething1() 
    .then(doSomething2(), onError) 
    .then(doSomething3(), onError) 
    .then(doSomething4(), onError) 

如何为所有承诺(如window.onError)实现全局错误处理程序?

回答

1

它不是一个全局错误处理程序(对我来说听起来不是个好主意),但由于错误是通过promise链传播的,所以可以通过添加代码来缩短代码(并消除重复)最后.catch()语句将链:

doSomething1() 
    .then(doSomething2()) 
    .then(doSomething3()) 
    .then(doSomething4()) 
    .catch(onError) 

这会赶上任何的doSomething*功能引发的任何拒绝。