Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.01.2010, 18:23
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

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

Последний раз редактировалось Niar, 26.01.2010 в 18:35.
Ответить с цитированием
  #2 (permalink)  
Старый 26.01.2010, 18:50
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

try..catch читал?
Ответить с цитированием
  #3 (permalink)  
Старый 26.01.2010, 18:52
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Да.
Там нету вложенных инструкций.
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #4 (permalink)  
Старый 26.01.2010, 18:58
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Цитата:
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}

Последний раз редактировалось PeaceCoder, 26.01.2010 в 19:04.
Ответить с цитированием
  #5 (permalink)  
Старый 26.01.2010, 19:02
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Какой-то странный у вас пример.
alert не показывает 'поймали ошибку' а какие-то многа букаф на англ. которые нельзя копи\паст
Я требую рабочий пример
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.

Последний раз редактировалось Niar, 26.01.2010 в 19:05.
Ответить с цитированием
  #6 (permalink)  
Старый 26.01.2010, 19:05
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

а ща ?
Ответить с цитированием
  #7 (permalink)  
Старый 26.01.2010, 19:06
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Вроде нормально)
Хорошая пища для ума на завтра.
Спасибо.
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.

Последний раз редактировалось Niar, 26.01.2010 в 19:12.
Ответить с цитированием
  #8 (permalink)  
Старый 27.01.2010, 14:10
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

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

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

Почему тут срабатывает внешний catch?
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.

Последний раз редактировалось Niar, 27.01.2010 в 14:15.
Ответить с цитированием
  #9 (permalink)  
Старый 27.01.2010, 14:24
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Niar
Почему тут срабатывает внешний catch?
т.к других нет. всегда срабатывает первый catch проходящий из глубины ошибки. если надо передать ошибку дальше надо делать throw, что бы другие catch поймали ее и обработали если надо
Ответить с цитированием
  #10 (permalink)  
Старый 27.01.2010, 14:26
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

А что нельзя сделать чтобы сработал finally и всё?
Ведь вроде как catch не обязателен если стоит finally.
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск