2015-11-03 67 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被拋出到你的異常處理程序似乎是「只讀」。我沒有任何文檔可以支持(可能是每個瀏覽器都是這樣做的),但是一個簡單的測試就是使用本地變量作爲記錄的消息。既然你只是記錄和委託,這可能是你所需要的。