我从John爸爸的演示中提取了一些测井角异常代码。
问题代码在这里:
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的对象的属性消息。
正确设置了第二条消息,记录器现在可以工作了。那么,当引发第一个异常时,为什么不能设置exception.message属性呢?(它是通过调用$window.localStorage[key] = JSON.stringify(value);引发的)
发布于 2015-11-03 16:57:05
抛给异常处理程序的exception.message似乎是“只读”。我没有任何文档来支持这一点(可能是那些不同的浏览器所做的事情之一),但是一个简单的测试将是使用一个局部变量来记录消息。因为您只是记录和委派,所以这可能是您所需要的。
https://stackoverflow.com/questions/33504761
复制相似问题