Поделиться через


Оператор try...catch...finally

Реализует обработку ошибок в JScript.

try {
   [tryStatements]
} catch(exception) {
   [catchStatements]
} finally {
   [finallyStatements]}

Аргументы

  • tryStatements
    Необязательный. Операторы, в которых может возникнуть ошибка.

  • исключение
    Обязательный. Любое имя переменной. Исходное значение exception является значением возникшей ошибки.

  • catchStatements
    Необязательный. Операторы обработки ошибок, возникших в соответствующем блоке tryStatements.

  • finallyStatements
    Необязательный. Операторы, безусловно выполняемые после выполнения всех остальных действий по обработке ошибки.

Заметки

Оператор try...catch...finally позволяет, не прерывая выполнение программы, обрабатывать некоторые или все возможные ошибки, которые могут возникать в конкретном блоке кода. Если возникает ошибка, обработка которой не предусмотрена программистом, в JScript просто выводится на экран обычное сообщение об ошибке, как в случае отсутствия обработки ошибок.

Аргументы tryStatements содержат код, где может возникнуть ошибка, а аргументы catchStatements содержат код для обработки возникающих ошибок. При возникновении ошибки в tryStatements управление программой передается catchStatements для обработки. Исходное значение exception является значением возникшей ошибки в tryStatements. Если ошибок нет, catchStatements не выполняется.

Если ошибку невозможно обработать в блоке catchStatements, связанном с блоком tryStatements, в котором произошла ошибка, используйте оператор throw для распространения ошибки на более высокий уровень обработчика ошибок.

После выполнения всех операторов в tryStatements и обработки всех ошибок catchStatements выполняются операторы в finallyStatements.

Обратите внимание, что код в finallyStatements выполняется безусловно, даже если оператор возврата находится внутри блоков try или catch или если ошибка возникает в блоке catch. Все операторы в блоке finallyStatements выполняются в любом случае, если только не произойдет необработанная ошибка (например, если в блоке catch возникнет ошибка во время выполнения).

Примечание

Во избежание подобной неоднозначной ситуации не следует использовать оператор return в блоке finally.Код в блоке finally выполняется после того, как в блоке try или catch встретится оператор return, но перед выполнением оператора return.В этом случае оператор return в блоке finally выполняется перед начальным оператором return, что позволяет изменить возвращаемое значение.

Примеры

Описание

В следующем примере создается ошибка и отображается сообщение об ошибке, ее код и имя.

Код

try
{
    var arr = new Array(-1);
}
catch(e)
{
    print ("Error Message: " + e.message);
    print ("Error Code: " + (e.number & 0xFFFF))
    print ("Error Name: " + e.name);
}

// Output:
//  Error Message: Array length must be zero or a positive integer
//  Error Code: 5029
//  Error Name: RangeError

Описание

В следующем примере показана обработка ошибок в JScript.

Код

try
    {
    print("Outer try is running");
 
    try
        {
        print("Nested try is running");
        throw new Error(301, "an error");
        }
    catch(e)
        {
        print("Nested catch caught " + e.message);
        throw e;
        }
    finally
        {
        print("Nested finally is running");
        }   
    }
catch(e)
    {
    print("Outer catch caught " + e.message);
    }
finally
    {
    print("Outer finally is running");
    }

// Output:
//  Outer try is running
//  Nested try is running
//  Nested catch caught an error
//  Nested finally is running
//  Outer catch caught an error
//  Outer finally is running

Требования

Версия 5

См. также

Ссылки

Оператор throw

Объект Error