从$ window.localstorage处理异常日志记录

时间:2015-11-03 16:51:07

标签: javascript angularjs

我从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);

引发的

1 个答案:

答案 0 :(得分:0)

抛出到异常处理程序的 exception.message 似乎是“只读”。我没有任何文档可以支持(可能是那些每个浏览器做不同的事情之一),但一个简单的测试是使用局部变量来记录消息。由于您只是记录和委派,这可能就是您所需要的。