Интересный момент что catch ловит только RangeError
|
Да. похоже, что это просто Error.
Ведь можно самому сделать trow new Error(). На свои типы у IE не похоже, поскольку e.name="Error". Будь это спец тип, я думаю, было бы не просто Error. |
Цитата:
|
то есть только ReferenceError
Вот например при SyntaxError даже если она сделана в try и есть catch то всё равно программа прерывается То есть не если искусственно new SyntaxError а если реально синтакс. ошибку допустить. |
Если прямо в странице допущена синтактическая ошибка, то действительно код не исполняется. А вот если синтаксическую ошибку допустить в eval, то ошибка ловится как положено.
Все остальные ошибки вроде нормально ловятся. |
Ловятся только ошибки времени то есть ReferenceError
Кстати на сайте статьи про типы объекта Error написаны убого. Ни одного примера одна-две строки и всё. |
Немного надо дополнить последний пост.
Такой код вообще не будет исполнен:
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 тоже исполнен в последнем примере не будет. |
Цитата:
try {
new Array(-10);
} catch(e) {
alert(e); // Ошибка RangeError
}
|
try {
var str = "ggg";
str();
} catch(e) {
alert(e); // TypeError
}
|
Значит Дэвид опять соврал:D
про eval http://javascript.ru/EvalError |
| Часовой пояс GMT +3, время: 21:42. |