Обработка ошибок
Для обработки ошибок JavaScript использует выражение try...catch
. По большому счету, при прочтении этой книги вам не нужно будет задумываться об обработке ошибок, потому что я делаю упор на объяснение возможностей и особенностей HTML5, а не базовых навыков программировании. В листинге 5-31 показано, как использовать это выражение.
Листинг 5-31: Обработка исключения
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
</head>
<body>
<script type="text/javascript">
try {
var myArray;
for (var i = 0; i < myArray.length; i++) {
document.writeln("Index " + i + ": " + myArray[i]);
}
} catch (e) {
document.writeln("Error: " + e);
}
</script>
</body>
</html>
Проблема, описанная в данном скрипе, довольно распространенная. Я пытаюсь использовать переменную, которая не была должным образом инициализирована. Я вставил ту часть кода, где, как я думаю, может возникнуть ошибка, в блок try
. Если ошибки не возникнет, и выражения будут выполнены, тогда блок catch
будет просто проигнорирован.
Если есть ошибка, тогда выполнение выражения в блоке try
сразу же прекратится, а управление перейдет блоку catch
. Встречающиеся ошибки описываются объектом Error
, которые передаются в блок catch
. В таблице 5-6 показаны свойства объекта Error
.
Таблица 5-6: Объект Error
Свойство | Описание | Возвращает |
message |
Описание ошибки. | string |
name |
Название ошибки. По умолчанию объект Error . |
string |
number |
Код ошибки. Если ошибок несколько, то указанной ошибки. | number |
Блок catch
– это возможность для восстановления и очистки кода после ошибок. Если есть выражения, которые должны быть выполнены независимо от того, была ошибка или нет, их можно разместить в необязательном блоке finally
, как показано в листинге 5-32.
Листинг 5-32: Использование блока finally
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
</head>
<body>
<script type="text/javascript">
try {
var myArray;
for (var i = 0; i < myArray.length; i++) {
document.writeln("Index " + i + ": " + myArray[i]);
}
} catch (e) {
document.writeln("Error: " + e);
} finally {
document.writeln("Statements here are always executed");
}
</script>
</body>
</html>