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

11.6. Множественные блоки catch

11.6. Множественные блоки catch

В JavaScript 1.5 инструкция try/catch была добавлена возможность использовать несколько блоков catch. Чтобы использовать эту возможность, необходимо, чтобы за именем параметра блока catch следовало ключевое слово if и условное выражение:

try {
  // здесь могут возбуждаться исключения нескольких типов
  throw 1;
}
catch(e if е instanceof ReferenceError) {
  // Здесь обрабатывается исключение обращения к неопределенному имени
}
catch(e if е === "quit”) {
  // Обработка исключения, получаемое в результате возбуждения сроки "quit"
}
catch(e if typeof e === "string") {
  // Здесь обрабатываются все остальные строковые исключения
}
catch(e) {
  // Здесь обрабатываются любые другие исключения
}
finally {
  // Блок finally действует как обычно
}

Когда возникает какое-либо исключение, по очереди проверяются все блоки catch. Исключение присваивается именованному параметру блока catch и вычисляется условное выражение. Если оно возвращает true, выполняется тело этого блока catch, а все остальные блоки catch пропускаются. Если блок catch не имеет условного выражения, он ведет себя как блок с условным выражением if true и выполняется всегда, если перед ним не был встречен блок catch, удовлетворяющий условию. Если условное выражение присутствует во всех блоках catch и ни в одном из них условное выражение не вернуло true, исключение продолжит распространение как необработанное. Обратите внимание, что, поскольку условное выражение уже находится в круглых скобках блока catch, его не требуется еще раз заключать в скобки, как в обычных инструкциях if.

Оглавление книги


Генерация: 1.173. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз