Главная страница   /   5.7. Обработка ошибок (Руководство по HTML5

Руководство по HTML5

Руководство по HTML5

Адам Фриман

5.7. Обработка ошибок

Для обработки ошибок 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>