8c1dea14

Условные блоки catch управляют вызовом


function getCustInfo(name, id, email)

{

   var n, i, e;

   if (!validate_name(name))

      throw "InvalidNameException"

   else

      n = name;

   if (!validate_id(id))

      throw "InvalidIdException"

   else

      i = id;

   if (!validate_email(email))

      throw "InvalidEmailException"

   else

      e = email;

   cust = (n + " " + i + " " + e);

   return (cust);

}

Условные блоки catch управляют вызовом соответствующего обработчика исключений.

try {

// функция может вызвать три вида исключений

   getCustInfo("Lee", 1234, "lee@netscape.com")

}

catch (e if e == "InvalidNameException") {

// вызывает обработчик неправильных имён

bad_name_handler(e)

}

catch (e if e == "InvalidIdException") {

// вызывает обработчик неправильных ids/идентификаторов

bad_id_handler(e)

}

catch (e if e == "InvalidEmailException") {

// вызывает обработчик неправильных email-адресов

bad_email_handler(e)

}

catch (e){

// незвестное исключение записывается в log-файл

logError(e)

}

Блок finally


Блок finally содержит операторы, выполняемые после выполнения блоков try и catch, но до выполнения операторов, идущих после оператора try...catch. Блок finally выполняется независимо от того, было ли вызвано исключение. Если исключение вызывается, операторы блока finally выполняются даже в том случае, если ни один блок catch не обработал исключение.

Вы можете использовать блок finally для корректного завершения скрипта при возникновении исключения; например, Вам может понадобиться освободить ресурс, связанный скриптом. В следующем примере файл открывается и операторы работают с ним (серверный JavaScript даёт возможность доступа к файлам). Если вызывается исключение при открытом файле, блок finally закрывает файл до того, как скрипт потерпит неудачу.

openMyFile();

try {

   writeMyFile(theData)

}

finally {

   closeMyFile() // ресурс всегда закрывается

}

Вложение операторов try...catch


Вы можете вкладывать один или более операторов try...catch друг в друга. Если внутренний оператор try...catch не имеет блока catch, на совпадение проверяется блок catch содержащего его оператора try...catch.


             


Copyright © 2000 Все Права Зарезервированы.

Дата последнего обновления 28 сентября 2000 года.


Начало  Назад  







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий