我使用装饰器为$exceptionHandler定义自定义行为,并尝试对其进行测试。
当它被调用时,它会收到两个参数,' exception'和'原因'。我似乎无法找到有关如何填充“原因”的文档。参数。如何抛出异常以使参数不为空?
谢谢!
答案 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
};
}];
}
所以当你装饰它时,就像 first 参数是异常一样,第二个参数是原因。您不能throw
例外,并且期望参数不为空。这是因为整个Angular代码库中的信息都没有传递给它 - 例如在promises中,下面的代码调用它:
} catch (e) {
deferred.reject(e);
exceptionHandler(e);
}
正如您所看到的 - 在这种情况下永远不会传递第二个参数(这是一个非常常见的参数)。所以,我担心如果你想使用cause
,你必须装饰Angular中调用$excpetionHandler
的每个地方,或者只是在你自己的代码中使用它。