我如何填充原因' $ exceptionHandler的参数?

时间:2015-04-16 14:57:41

标签: javascript angularjs

我使用装饰器为$exceptionHandler定义自定义行为,并尝试对其进行测试。

当它被调用时,它会收到两个参数,' exception'和'原因'。我似乎无法找到有关如何填充“原因”的文档。参数。如何抛出异常以使参数不为空?

谢谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,所有$exceptionHandler都会使用给定参数登录到控制台:

function $ExceptionHandlerProvider() {
  this.$get = ['$log', function($log) {
    return function(exception, cause) {
      // .apply means delegate the arguments
      $log.error.apply($log, arguments); // just delegate the arguments
    };
  }];
}

source

所以当你装饰它时,就像 first 参数是异常一样,第二个参数是原因。您不能throw例外,并且期望参数不为空。这是因为整个Angular代码库中的信息都没有传递给它 - 例如在promises中,下面的代码调用它:

} catch (e) {
   deferred.reject(e);
   exceptionHandler(e);
}

source

正如您所看到的 - 在这种情况下永远不会传递第二个参数(这是一个非常常见的参数)。所以,我担心如果你想使用cause,你必须装饰Angular中调用$excpetionHandler的每个地方,或者只是在你自己的代码中使用它。