Owe*_* K. 7 javascript typescript zonejs angular
我一直在使用Zone.js,我想为任何未捕获的异常设置日志记录.我可以设置一个错误处理程序,如下所示:
window.onerror = function(e) {
//send an error report to the server
}
Run Code Online (Sandbox Code Playgroud)
但是如果在Promise中抛出异常,这将不起作用.关于Zone错误处理程序的好处是它挂钩到Promises并为它们中的异常触发,但是在创建区域之后我找不到实际覆盖或添加错误处理程序的方法,而不是覆盖一堆区域内的私人田地.
是否有可用于更新错误处理程序的区域的实际API,或者我是否必须更改构建根区域的polyfill或覆盖私有字段或类似的东西?
你可以尝试这样的事情:
<html>
<head>
<script src="https://unpkg.com/zone.js?main=browser"></script>
<script>
Zone.current.fork({
onHandleError: function(parentZoneDelegate, currentZone, targetZone, error) {
console.log("Error handled by zone: " + error);
}
}).run(function () {
setTimeout(function () {
console.log("In zone setTimeout")
throw new Error("Throw in zone setTimeout");
}, 0);
console.log("Directly in zone");
});
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这将捕获由 指定的自定义处理程序中的异常onHandleError并产生如下输出:
Directly in zone (test1.html:14)
In zone setTimeout (test1.html:11 )
Error handled by zone: Error: Throw in zone setTimeout (test1.html:7)
Run Code Online (Sandbox Code Playgroud)
然而,如果直接在区域中抛出异常,它似乎不起作用。我已就此提交并发出问题。
| 归档时间: |
|
| 查看次数: |
2102 次 |
| 最近记录: |