JavaScript. Подробное руководство, 6-е издание, стр. 156

<b>}</b>

<b>catch(e if е === &quot;quit”) {</b>

<b>  // Обработка исключения, получаемое в результате возбуждения сроки &quot;quit&quot;</b>

<b>}</b>

<b>catch(e if typeof e === &quot;string&quot;) {</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 = &lt;periodictable&gt;</b>

<b>  &lt;element іd=&quot;1&quot;&gt;&lt;name&gt;Водород&lt;/name&gt;&lt;/еlеment&gt;</b>

<b>  &lt;element іd=&quot;2&quot;&gt;&lt;name&gt;Гелий&lt;/name&gt;&lt;/еlement&gt;</b>

<b>  &lt;element id=&quot;3&quot;&gt;&lt;name&gt;/Литий&lt;/name&gt;&lt;/element&gt;</b>

<b>&lt;/periodictable&gt;;</b>

<b>// Добавить новый элемент в таблицу</b>

<b>pt.element += &lt;element іd=&quot;4&quot;&gt;&lt;name&gt;Бериллий&lt;/name&gt;&lt;/element;</b>

Синтаксис литералов XML в расширении Е4Х в качестве экранирующих символов использует угловые скобки, что позволяет помещать в разметку XML произвольные выражения на языке JavaScript. Ниже демонстрируется еще один способ создания точно такого же элемента XML, как в примере выше:

<b>pt = &lt;periodictable&gt;&lt;/periodictable&gt;; // Создать пустую таблицу</b>

<b>var elements = [&quot;Водород&quot;, &quot;Гелий&quot;, &quot;Литий&quot;]; // Добавить элементы</b>

<b>// Создать теги XML, используя содержимое массива</b>

<b>for(var n = 0; n &lt; elements.length; n++) {</b>

<b>  pt.element += &lt;element id={n+1}&gt;&lt;name&gt;{elements[n]}&lt;/name&gt;&lt;/element&gt;;</b>

<b>}</b>

В дополнение к синтаксису литералов можно также извлекать данные из строк с разметкой XML. Следующий пример добавляет в периодическую таблицу еще один элемент: