Оператор 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