我从John Papa的演示中获取了logging angular exceptions的一些代码。
问题代码在这里:
function extendExceptionHandler($delegate, exceptionHandler, logger) {
return function (exception, cause) {
var appErrorPrefix = exceptionHandler.config.appErrorPrefix || '';
var errorData = { exception: exception, cause: cause };
//problem occurs when setting exception.message
exception.message = appErrorPrefix + exception.message;
$delegate(exception, cause);
logger.error(exception.message, errorData);
};
}
当我在调试器中设置断点时,我可以看到exception.message
具有值
无法设置' authorizationData' '存储':设置' authorizationData'的值超过了配额。"
但是,行exception.message = appErrorPrefix + exception.message;
会导致第二个例外:
无法设置只有getter
的[object Object]的属性消息
正确设置了第二条消息,现在记录器正常工作。那么为什么在抛出第一个异常时我不能设置exception.message
属性? (它是通过调用$window.localStorage[key] = JSON.stringify(value);
)
答案 0 :(得分:0)
抛出到异常处理程序的 exception.message 似乎是“只读”。我没有任何文档可以支持(可能是那些每个浏览器做不同的事情之一),但一个简单的测试是使用局部变量来记录消息。由于您只是记录和委派,这可能就是您所需要的。