【发布时间】:2014-09-05 17:47:30
【问题描述】:
我正在使用装饰器来更改$exceptionHandler 的行为,将日志发送到服务器。我的问题是异常的堆栈跟踪似乎没用,只显示堆栈的一部分。例如:
语法错误:标记“未定义”不是 NaN 列的主表达式 的表达式[这里的表达式]。
at Error (native) at throwError (http://localhost:8080/angular/angular.js:6674:62) at primary (http://localhost:8080/angular/angular.js:6918:9) at unary (http://localhost:8080/angular/angular.js:6900:14) at multiplicative (http://localhost:8080/angular/angular.js:6883:16) at additive (http://localhost:8080/angular/angular.js:6874:16) at relational (http://localhost:8080/angular/angular.js:6865:16) at equality (http://localhost:8080/angular/angular.js:6856:16) at logicalAND (http://localhost:8080/angular/angular.js:6847:16) at logicalOR (http://localhost:8080/angular/angular.js:6839:41)
有没有办法配置 AngularJS 以显示更多堆栈?如果我查看 Chrome 控制台,我可以看到更多堆栈,并获取文件名,但不在异常处理程序中。
即使我更改了Error 限制,我也看不到原始文件:
Error.stackTraceLimit = Infinity;
【问题讨论】:
-
没有已知的方法可以做到这一点。
-
今年冬天我参加了 Ng-Conf,Angular 团队在 zone.js 上做了一个演示。我没有研究它,所以我不知道它有多相关,但也许值得探索。 thechangelog.com/zone-js(顺便说一句,那不是我的博客,只是用谷歌搜索了它)
-
你是使用'throw new Error("error description")'还是'throw "error description"'来抛出错误?如果你抛出一个 Error 对象,它会提供更多信息。
-
你能在这里提供你的 $exceptionHandler 装饰器的实现吗?
-
那是 Angular 的一部分,真的很糟糕......堆栈跟踪比通常更没用