Что бросает DOMErrors - PullRequest
       16

Что бросает DOMErrors

6 голосов
/ 28 января 2012

Введение

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

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

window.DOMError !== undefined

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

err instanceof DOMError === true

Вопрос

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

Ответы [ 3 ]

3 голосов
/ 05 февраля 2012

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

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

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

В настоящее время он используется W3 Файловым 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.

1 голос
/ 31 января 2012

Это не реализовано в Firefox ( source ), в Chrome 17 его тоже нет.

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

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

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

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

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

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

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

0 голосов
/ 31 января 2012

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

Пример:

document.querySelectorAll("div:foo");

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

...