Свои ошибки в javascript, пример использования конструкции try => catch
Требуется создать свой тип ошибок в javascript на основе встроенного класса Error. Приведите пример создания своего объекта ошибки и взаимодействия его с конструкцией try… catch( + проверка типа ошибки с помощью instanceof)
1 Ответ(ы)
// Объявление function PropertyError(property) { this.name = "PropertyError"; // имя ошибки this.property = property; // дополнительно указываем переменную в которой ошибка this.message = "Ошибка в свойстве " + property; // сообщение if (Error.captureStackTrace) { Error.captureStackTrace(this, PropertyError); // стек вызова } else { this.stack = (new Error()).stack; // стек вызова } } // наследуем от Error PropertyError.prototype = Object.create(Error.prototype); // Генерация ошибки function readUser(data) { var user = JSON.parse(data); if (!user.age) { throw new PropertyError("age"); } if (!user.name) { throw new PropertyError("name"); } return user; } // Запуск и try..catch try { var user = readUser('{ "age": 25 }'); } catch (err) { if (err instanceof PropertyError) { // проверяем класс ошибки if (err.property == 'name') { // если в данном месте кода возможны анонимы, то всё нормально alert("Здравствуйте, Аноним!"); } else { alert(err.message); // Ошибка в свойстве ... } } else if (err instanceof SyntaxError) { alert("Ошибка в синтаксисе данных: " + err.message); } else { throw err; // неизвестная ошибка, не знаю что с ней делать } }