2015-11-03 84 views
0

我从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;导致seco第二异常:

无法设置[对象的对象]仅具有吸气

该第二消息被正确地设置和记录器现在工作的属性信息。那么为什么我在第一个异常抛出时不能设置exception.message属性? (它被$window.localStorage[key] = JSON.stringify(value);抛出)

回答

0

exception.message被抛出到你的异常处理程序似乎是“只读”。我没有任何文档可以支持(可能是每个浏览器都是这样做的),但是一个简单的测试就是使用本地变量作为记录的消息。既然你只是记录和委托,这可能是你所需要的。