Что бросает DOMErrors

Вступление

DOMError - это интерфейс, определенный DOM.

Я хотел бы проверить, поддерживает ли браузер это. Наивная проверка

window.DOMError !== undefined

Лучше было бы использовать действие, которое выдает DOMError, и проверить, что

err instanceof DOMError === true

Вопрос

Какие действия выкидывают DOMErrors?

3 ответа

Решение

DOMError является ошибкой, не связанной с исключениями. Он никогда не будет брошен, кроме как в объекте, который реализует оба DOMError а также DOMException может быть брошен как DOMException,

Ожидается, что конкретный класс, реализующий DOMError а также DOMException могут быть одинаковыми во многих реализациях DOM, но они разделены в спецификации для удобства языков с привязками к DOMException это затруднило бы повторное использование существующей реализации. Например, языки без собственных исключений могут иметь внеполосный канал сигнализации об ошибках, который на самом деле не может быть выгружен как объект на свойство, подобное DOMError Можно.

DOMError, составленный в DOM4, является тривиальным заполнителем, содержащим только строку имени. Ожидается, что любые спецификации, которые основаны на нем, добавят некоторые свойства для инкапсуляции более полезной информации.

В настоящее время он используется W3 File API для ошибок в FileReader, который, будучи асинхронным интерфейсом, не имеет нигде полезного для генерирования исключений. Файловый API не добавляет никаких дополнительных свойств DOMError или подынтерфейс, но и он, и спецификация DOM4, скорее всего, претерпят изменения, прежде чем они приблизятся к состоянию Рекомендации.

DOMError, изначально представленный в DOM Level 3 Core, предоставлял расширенный интерфейс ошибок с более подробной информацией о том, где в документе произошла ошибка. Он был предназначен для процессов сериализатора и синтаксического анализатора в DOM Level 3 LS, но включен в Core для использования document.normalizeDocument метод, который также моделирует цикл сериализации / анализа.

Современные браузеры не имеют DOMError, потому что они не поддерживают DOM 4, DOM Level 3 LS или normalizeDocument, Но могут быть и другие реализации DOM, не относящиеся к браузеру; У pxdom для одного есть интерфейсы DOM 3.

Это не реализовано в Firefox ( исходный код), в Chrome 17 его нет ни

W3 документация по этому вопросу очень расплывчата. Смотрите это утверждение:

Этот интерфейс предназначен для других спецификаций, которые хотят представить обработку ошибок другими способами, кроме исключений. Ожидается, что типы исключений используются повторно.

Насколько я вижу, методы бросают DOMException. Поскольку это помеченный интерфейс (а не исключение), я предполагаю, что он должен быть реализован, а не использоваться.

Кстати, это существовало и в DOM Level 3.

Изменить: После прочтения комментария ThinkingStiff, я почти уверен, что его не следует бросать никогда. Вы не можете даже бросить это самостоятельно (Опера 11.52):

Uncaught exception: TypeError: 'DOMError' is not a constructor  
Uncaught exception: TypeError: 'DOMError' is not a function

Это также интерфейс в реализации DOM Java: DOMError.

Ошибки DOME вызываются при попытке создать недопустимый элемент DOM или при передаче несуществующего узла в качестве аргумента методам манипулирования узлами. Другими словами, возникает исключение, когда операцию невозможно выполнить.

Пример:

document.querySelectorAll("div:foo");

Это вызывает DOMError, когда div:foo не существует.

Другие вопросы по тегам