Что бросает 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 не существует.