Обработка регистрации исключений из $ window.localstorage

0

Я взял некоторый код для регистрации угловых исключений из демонстрации Джона Папы.

Код проблемы находится здесь:

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" в "Storage": значение "authorizationData" превысило квоту ".

Однако строка exception.message = appErrorPrefix + exception.message; вызывает второе исключение:

Невозможно установить сообщение свойства объекта [Object Object], которое имеет только getter

Это второе сообщение правильно установлено и теперь работает журнал. Итак, почему я не могу установить свойство exception.message при вызове первого исключения? (он вызывается вызовом $window.localStorage[key] = JSON.stringify(value);)

Теги:

1 ответ

0

Исключение.message, которое бросается в ваш обработчик исключений, похоже, "только для чтения". У меня нет документации, подтверждающей, что это может быть одна из тех вещей, которые каждый-браузер-делает-по-разному, но простой тест заключается в использовании локальной переменной для зарегистрированного сообщения. Поскольку вы только регистрируете и делегируете, это может быть все, что вам нужно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню