Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Исключения (throw,try,catch,finally) (https://javascript.ru/forum/misc/7326-isklyucheniya-throw-try-catch-finally.html)

Niar 26.01.2010 18:23

Исключения (throw,try,catch,finally)
 
Может мне кто-нибудь рассказать про throw, try, catch, finally? После прочтения в книге осталось больше вопросов чем ответов.
Точнее не понятно 2 пункта.
1. Если есть вложенные исключения и инструкции обработки их как выполняется поиск.
2. Зачем try если исключение можно бросить и не в нём

PeaceCoder 26.01.2010 18:50

try..catch читал?

Niar 26.01.2010 18:52

Да.
Там нету вложенных инструкций.

PeaceCoder 26.01.2010 18:58

Цитата:

1. Если есть вложенные исключения и инструкции обработки их как выполняется поиск.
гдето читал что последовательно и по глубине
Цитата:

Сообщение от Niar
2. Зачем try если исключение можно бросить и не в нём

try нужен что бы скрипт не остановился при ошибке.
function err(e){throw e}
a = prompt('Введите "ошибка" или "еще ошибка"');
try {
try {
  err(a)
  } catch (e){ if (e=='ошибка') alert('поймали ошибку'); else throw e}
}  catch (e){ if (e=='еще ошибка') alert('поймали ЕЩЕ ошибку'); else throw e}

Niar 26.01.2010 19:02

Какой-то странный у вас пример.
alert не показывает 'поймали ошибку' а какие-то многа букаф на англ. которые нельзя копи\паст
Я требую рабочий пример:D

PeaceCoder 26.01.2010 19:05

а ща ?

Niar 26.01.2010 19:06

Вроде нормально)
Хорошая пища для ума на завтра.
Спасибо.

Niar 27.01.2010 14:10

function err(e){throw e}
a = prompt('Введите "ошибка"');

try {
 try {
     err(a);
  } 
finally{
alert("Финалли");
}
}  
catch (e) {
if (e=='ошибка') alert('детектед ошибка');
 }

Почему тут срабатывает внешний catch?

PeaceCoder 27.01.2010 14:24

Цитата:

Сообщение от Niar
Почему тут срабатывает внешний catch?

т.к других нет. всегда срабатывает первый catch проходящий из глубины ошибки. если надо передать ошибку дальше надо делать throw, что бы другие catch поймали ее и обработали если надо

Niar 27.01.2010 14:26

А что нельзя сделать чтобы сработал finally и всё?
Ведь вроде как catch не обязателен если стоит finally.


Часовой пояс GMT +3, время: 18:24.