Handle error from setTimeout

后端 未结 4 652
孤城傲影
孤城傲影 2020-12-02 15:41

Simple question about try-catch for function in setTimeout

try {
    setTimeout(function () {
        throw new Error(\'error!\');
    }, 300)
} catch (e) {
         


        
4条回答
  •  眼角桃花
    2020-12-02 16:18

    A bit strange solution, but sometimes it would be useful maybe...

    function globalErrorHandler(e) {
      console.warn('eeee!')
      console.warn(e);
    }
    
    const _setTimeoutOriginal = setTimeout;
    setTimeout = function(callback, timeout) {
      const args = Array.from(arguments).slice(2);
      _setTimeoutOriginal(function() {
        try {
          callback.apply(this, args);
        } catch (e) {
          globalErrorHandler(e);
        }
      }, timeout);
    };
    
    setTimeout(function() {
      throw new Error('error!');
    }, 300)

提交回复
热议问题