Главная страница   /   4.7. Обработка ошибок (Pro jQuery

Pro jQuery

Pro jQuery

Адам Фриман

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

Для обработки ошибок JavaScript использует выражение try...catch. По большому счету, при прочтении этой книги вам не нужно будет задумываться об обработке ошибок, потому что я делаю упор на объяснении возможностей и особенностей jQuery, а не на программировании в целом. В листинге 4-32 показано, как использовать это выражение.

Листинг 4-32: Обработка исключения
<!DOCTYPE HTML>
<html>
<head>
	<title>Example</title>
	<script type="text/javascript">
		try {
			var myArray;
			for (var i = 0; i < myArray.length; i++) {
				console.log("Index " + i + ": " + myArray[i]);
			}
		} catch (e) {
			console.log("Error: " + e);
		}
	</script>
</head>
<body>
	This is a simple example
</body>
</html>

Проблема, описанная в данном скрипе, довольно распространенная. Я пытаюсь использовать переменную, которая не была должным образом инициализирована. Я вставил ту часть кода, где, как я думаю, может возникнуть ошибка, в блок try. Если ошибки не возникнет и выражения будут выполнены, тогда блок catch будет просто проигнорирован.

Если есть ошибка, тогда выполнение выражения в блоке try сразу же прекратится, а управление перейдет блоку catch. Встречающиеся ошибки описываются объектом Error, которые передаются в блок catch. В таблице 4-5 показаны свойства объекта Error.

Таблица 4-5: Объект Error
Свойство Описание Возвращает
message Описание ошибки string
name Название ошибки. По умолчанию объект Error string
number Код ошибки. Если ошибок несколько, то указанной ошибки number

Блок catch – это возможность для восстановления и очистки кода после ошибок. Если есть выражения, которые должны быть выполнены независимо от того, была ошибка или нет, их можно разместить в необязательном блоке finally, как показано в листинге 4-33.

Листинг 4-33: Использование блока finally
<!DOCTYPE HTML>
<html>
<head>
	<title>Example</title>
	<script type="text/javascript">
		try {
			var myArray;
			for (var i = 0; i < myArray.length; i++) {
				console.log("Index " + i + ": " + myArray[i]);
			}
		} catch (e) {
			Console.log("Error: " + e);
		} finally {
		 console.log("Statements here are always executed");
		}
	</script>
</head>
<body>
	This is a simple example
</body>
</html>