Оператор try...catch...finally
Обновлен: Ноябрь 2007
Реализует обработку ошибок в JScript.
try {
[tryStatements]
} catch(exception) {
[catchStatements]
} finally {
[finallyStatements]}
Аргументы
tryStatements
Необязательно. Операторы, в которых может возникнуть ошибка.exception
Обязательно. Любое имя переменной. Исходное значение 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. Операторы в блоке finallyStatments будут выполнены в любом случае.
Пример
В следующем примере показана обработка ошибок в JScript.
try {
print("Outer try running...");
try {
print("Nested try running...");
throw "an error";
} catch(e) {
print("Nested catch caught " + e);
throw e + " re-thrown";
} finally {
print("Nested finally is running...");
}
} catch(e) {
print("Outer catch caught " + e);
} finally {
print("Outer finally running");
}
В результате выполнения кода создаются следующие выходные данные.
Outer try running..
Nested try running...
Nested catch caught an error
Nested finally is running...
Outer catch caught an error re-thrown
Outer finally running