В JavaScript есть обработка исключений. try-catch-finally
, throw
, всё как у взрослых. Большинство программистов, правда, ими не пользуется, но не в этом суть.
И вот мы пишем, допустим, библиотеку и хотим, чтобы её функции в случае чего бросали определённые исключения. Язык позволяет нам здесь бросать что угодно, например, строку: throw "Ой, ошибка, ошибка!";
.
Но, это не наш путь. Есть предопределённые типы ошибок, унаследованные от Error
и есть стандарт, который говорит нам об объекте с полями name
и message
.
MDN показывает нам, как сделать свой «класс» исключений, унаследованный от Error
:
// Create a new object, that prototypally inherits from the Error constructor. function MyError(message) { this.name = "MyError"; this.message = message || "Default Message"; } MyError.prototype = new Error(); MyError.prototype.constructor = MyError; |
Мозиловцы правда здесь согрешили и использовали для создания прототипа рабочий конструктор Error
. Сделаем по правильному:
Остальной текст под катом