<b>}</b>
<b>catch(e if е === "quit”) {</b>
<b> // Обработка исключения, получаемое в результате возбуждения сроки "quit"</b>
<b>}</b>
<b>catch(e if typeof e === "string") {</b>
<b> // Здесь обрабатываются все остальные строковые исключения</b>
<b>}</b>
<b>catch(e) {</b>
<b> // Здесь обрабатываются любые другие исключения</b>
<b>}</b>
<b>finally {</b>
<b> // Блок finally действует как обычно</b>
<b>}</b>
Когда возникает какое-либо исключение, по очереди проверяются все блоки
<b>catch</b>
. Исключение присваивается именованному параметру блока
<b>catch</b>
и вычисляется условное выражение. Если оно возвращает
<b>true</b>
, выполняется тело этого блока
<b>catch</b>
, а все остальные блоки
<b>catch</b>
пропускаются. Если блок
<b>catch</b>
не имеет условного выражения, он ведет себя как блок с условным выражением
<b>if true</b>
и выполняется всегда, если перед ним не был встречен блок
<b>catch</b>
, удовлетворяющий условию. Если условное выражение присутствует во всех блоках
<b>catch</b>
и ни в одном из них условное выражение не вернуло
<b>true</b>
, исключение продолжит распространение как необработанное. Обратите внимание, что, поскольку условное выражение уже находится в круглых скобках блока
<b>catch</b>
, его не требуется еще раз заключать в скобки, как в обычных инструкциях
<b>if</b>
.
11.7. Е4Х: ECMAScript for XML
Расширение ECMAScript for XML, более известное как E4X, - это стандартное расширение[25] JavaScript, определяющее ряд мощных особенностей для обработки XML-документов. Расширение Е4Х поддерживается интерпретаторами Spider-monkey 1.5 и Rhino 1.6. Из-за того что оно не получило широкой поддержки у производителей броузеров, расширение Е4Х, вероятно, лучше относить к серверным технологиям, основанным на интерпретаторах Spidermonkey или Rhino.
Расширение Е4Х представляет XML-документ (или элементы и атрибуты XML-документа) как объект XML, и представляет фрагменты XML (несколько элементов XML, не имеющих общего родителя) в виде родственного объекта XMLList. В этом разделе мы познакомимся с несколькими способами создания и обработки объектов XML. Объекты XML - это совершенно новый тип объектов, для работы с которыми в Е4Х предусмотрен (как мы увидим) специальный синтаксис. Как известно, для всех стандартных объектов JavaScript, не являющихся функциями, оператор
<b>typeof</b>
возвращает строку «
<b>object</b>
». Объекты XML, подобно функциям, отличаются от обычных объектов JavaScript, и для них оператор
<b>typeof</b>
возвращает строку "xml". Важно понимать, что объекты XML никак не связаны с объектами DOM (Document Object Model - объектная модель документа), которые используются в клиентском JavaScript (глава 15). Стандарт Е4Х определяет дополнительные средства для преобразования XML-документов и элементов между представлениями Е4Х и DOM, но броузер Firefox не реализует их. Это еще одна причина, почему расширение Е4Х лучше относить к серверным технологиям.
Этот раздел представляет собой краткое учебное руководство по расширению Е4Х и не должен рассматриваться как полноценное его описание. В частности, объекты XML и XMLList имеют множество методов, которые вообще не будут упоминаться здесь. Их описание также отсутствует в справочном разделе. Тем из вас, у кого появится желание использовать расширение Е4Х, за более полной информацией необходимо обращаться к официальной спецификации.
Расширение Е4Х определяет совсем немного новых синтаксических конструкций. Самая заметная часть нового синтаксиса заключается в возможности использования разметки XML непосредственно в программном коде JavaScript и включения в него литералов XML, как показано ниже:
<b>// Создать объект XML </b>
<b>var pt = <periodictable></b>
<b> <element іd="1"><name>Водород</name></еlеment></b>
<b> <element іd="2"><name>Гелий</name></еlement></b>
<b> <element id="3"><name>/Литий</name></element></b>
<b></periodictable>;</b>
<b>// Добавить новый элемент в таблицу</b>
<b>pt.element += <element іd="4"><name>Бериллий</name></element;</b>
Синтаксис литералов XML в расширении Е4Х в качестве экранирующих символов использует угловые скобки, что позволяет помещать в разметку XML произвольные выражения на языке JavaScript. Ниже демонстрируется еще один способ создания точно такого же элемента XML, как в примере выше:
<b>pt = <periodictable></periodictable>; // Создать пустую таблицу</b>
<b>var elements = ["Водород", "Гелий", "Литий"]; // Добавить элементы</b>
<b>// Создать теги XML, используя содержимое массива</b>
<b>for(var n = 0; n < elements.length; n++) {</b>
<b> pt.element += <element id={n+1}><name>{elements[n]}</name></element>;</b>
<b>}</b>
В дополнение к синтаксису литералов можно также извлекать данные из строк с разметкой XML. Следующий пример добавляет в периодическую таблицу еще один элемент: