Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.96 Mб
Скачать

5.4.3. Исключения: throw/catch/finally

Работа с исключениями в JavaScript организована, как и в C++ или Java:

try {

//...

throw {message: "err!"}

//..

}

catch (e) {

alert("Ошибка!"+e)

}

Блок try{} указывает выполнить код внутри блока. В случае ошибки осуществляется выход из этого блока и переход на блок обработки исключений: catch (e) {} . Оператор throw {} генерирует объект – исключение, после чего осуществляется выход из блока try. Обычно при этом генерируются потомки встроенного класса Error:

throw new Error("server timeout")

Часто при перехвате исключений надо перехватить определенный класс исключений. Оператор catch такого не умеет, поэтому полный код обработки будет выглядеть так:

try {

// код ...

} catch(e) {

// ловим нужное исключение

if (e instanceof ConnectionError) {

// обрабатываем его

} else {

// пробрасываем незнакомое исключение дальше

throw e

}

} finally {

//finally выполняется вне зависимости - было исключение или нет

}

В этом примере присутствует блок finally, взятый в javascript из java. В стандартной схеме try..catch..finally, код в finally выполнится при лю­бом результате работы try/catch, и туда удобно ставить чистки, уведомления о конце процесса.

<!-- пример pr18 -->

<html>

<head>

<title>Наша начальная страница</title>

</head>

<body>

<script type="text/javascript">

function showErrorInfo(e) {

document.write(e, ":<BR>");

document.write("Источник ошибки: ", (e.number >> 16) & 0x1FFF, "<BR>");

document.write("Номер ошибки: ", e.number & 0xFFFF, "<BR>");

document.write("Описание ошибки: ", e.description);

}

var x;

try {

x = y; // Ошибка: переменная y не определена

}

catch (e) { // Создает локальный объект e класса Error

showErrorInfo(e);

}

</script>

</body></html>

Будет выведено:

[objectError]: Источник_ошибки:10 Номер_ошибки:5009 Описание ошибки: 'y' - определение отсутствует

5.4.4. Встроенные объекты String, Array, Date, Math Объект String. Экземпляр объекта можно объявить двумя способами:

var имя_переменной = new String ( " строковое_ значение " )

var имя_переменной = "строковое_значение"

Свойства String: length — количество символов (включая пробелы); prototype — свойство, позволяющее добавить новые свойства и методы ко всем создаваемым строковым объектам. Создадим, например новый метод для всех строковых объектов. Содержание метода определяется пользовательской функцией myFunc().

<!-- пример pr17 -->

<html><head>

<title>Наша начальная страница</title>

</head>

<body>

<script type="text/javaScript">

function myFunc() {

return "Шура";

}

String.prototype.myName= myFunc;

var mystring=new String("Балаганов")

mystring += " Автор этой книги - " + mystring.myName();

document.write (mystring);//Балаганов Автор этой книги - Шура

</script>

</body> </html>

Методы объекта String:

big(), small(), bold()/italics() – помещает текст строки внутрь соответствующего тега <big> , <small> и др.

link (интернет-адрес) – преобразует строку в гиперссылку.

charCodeAt (номер символа) – возвращает код символа, номер кото­рого передан в качестве параметра, в формате Unicode,

indexOf (подстрока, начало поиска) – возвращает номер позиции подстроки в текущей строке. Второй параметр задает номер символа, с которого начинается поиск, если этот параметр пропущен, то поиск на­чинается с начала строки.

slice (начало, конец) – возвращает фрагмент строки в виде объекта. Если второй параметр пропущен, выбираются все символы до конца .

split (разделитель) – возвращает массив, строк, полученных в результате разделения текущей строки. Символ-разделитель передается первым параметром. substring (начало, конец) - возвращает фрагмент строки, последний символ во фрагмент не включается

toLowerCase ()/toUpperCase () – конвертирует все символы строки в нижний /в верхний регистр; toString () – возвращает значение строки.