Javascript.RU

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

Интересный момент что catch ловит только RangeError
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
  #32 (permalink)  
Старый 27.01.2010, 17:46
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Да. похоже, что это просто Error.
Ведь можно самому сделать trow new Error().
На свои типы у IE не похоже, поскольку e.name="Error". Будь это спец тип, я думаю, было бы не просто Error.
Ответить с цитированием
  #33 (permalink)  
Старый 27.01.2010, 17:48
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Сообщение от Niar Посмотреть сообщение
Интересный момент что catch ловит только RangeError
Что это значит? catch ловит любой Error, разве не так?
Ответить с цитированием
  #34 (permalink)  
Старый 27.01.2010, 17:50
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

то есть только ReferenceError
Вот например при SyntaxError даже если она сделана в try и есть catch то всё равно программа прерывается
То есть не если искусственно new SyntaxError а если реально синтакс. ошибку допустить.
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.

Последний раз редактировалось Niar, 27.01.2010 в 17:53.
Ответить с цитированием
  #35 (permalink)  
Старый 27.01.2010, 17:59
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Если прямо в странице допущена синтактическая ошибка, то действительно код не исполняется. А вот если синтаксическую ошибку допустить в eval, то ошибка ловится как положено.
Все остальные ошибки вроде нормально ловятся.
Ответить с цитированием
  #36 (permalink)  
Старый 27.01.2010, 18:05
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Ловятся только ошибки времени то есть ReferenceError
Кстати на сайте статьи про типы объекта Error написаны убого. Ни одного примера одна-две строки и всё.
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.

Последний раз редактировалось Niar, 27.01.2010 в 18:09.
Ответить с цитированием
  #37 (permalink)  
Старый 27.01.2010, 18:12
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Немного надо дополнить последний пост.
Такой код вообще не будет исполнен:
try {
  a->(1); // синтактическая ошибка
} catch(e) {
    alert(e)
  }

Такой код будет исполнен. Код внутри eval исполнен не будет. При этом будет поймана SyntaxError.
try {
  eval("a->(1);"); // синтактическая ошибка
} catch(e) {
    alert(e)
  }

Такой код будет исполнен. Код внутри eval исполнен не будет, в том числе и внутренний try..catch. При этом будет поймана SyntaxError во внешнем catch.
try {
  eval("try { a->(1); } catch (err) { alert(err) } finally { alert('finally'); }");
} catch(e) {
    alert(e)
  }

И finally тоже исполнен в последнем примере не будет.
Ответить с цитированием
  #38 (permalink)  
Старый 27.01.2010, 18:15
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

Сообщение от Niar Посмотреть сообщение
Ловятся только ошибки времени то есть ReferenceError.
Это не так, например
try {
  new Array(-10);
} catch(e) {
    alert(e); // Ошибка RangeError
  }
Ответить с цитированием
  #39 (permalink)  
Старый 27.01.2010, 18:21
Аватар для Мараторий
Кандидат Javascript-наук
Отправить личное сообщение для Мараторий Посмотреть профиль Найти все сообщения от Мараторий
 
Регистрация: 22.01.2010
Сообщений: 114

try {
  var str = "ggg";
  str();
} catch(e) {
    alert(e); // TypeError
  }
Ответить с цитированием
  #40 (permalink)  
Старый 27.01.2010, 18:25
Аватар для Niar
Труъ кодер
Отправить личное сообщение для Niar Посмотреть профиль Найти все сообщения от Niar
 
Регистрация: 20.01.2010
Сообщений: 194

Значит Дэвид опять соврал
про eval http://javascript.ru/EvalError
__________________
http://www.free-lance.ru/users/Nia173 Мой аккуант на free-lance.
Ответить с цитированием
Ответ



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

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