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)

e1f 27.01.2010 19:29

По последнему пункту:
finally не "заменяет" исключение, а генерирует еще одно, оно вылетает, поэтому первоначальное мы уже не можем увидеть. Чтобы увидеть, можно так:
try {
    throw new Error(404)
} catch (ex) {
    console.info(ex)
} finally {
    alert("Пыщь-пыщь")
    throw new Error(406)
}

Niar, форматируйте код отступами, влом читать :)

Niar 27.01.2010 19:30

Учту=)

Мараторий 27.01.2010 19:41

Цитата:

Сообщение от Niar (Сообщение 42399)
Не понятно только как try может быть завершён continue и return

Откуда вы такое вообще взяли? break, continue при вызове не в цикле и return не в функции дают SyntaxError.

Niar 27.01.2010 19:43

А всё Дэвид. Вот список причин исполнения finally если try закончен:
// 1) нормальным образом, достигнув конца блока
// 2) изза инструкции break, continue или return
// 3) с исключением, обработанным приведенным ранее блоком catch
// 4) с неперехваченным исключением, которое продолжает свое
// распространение на более высокие уровни

Кстате break можно заюзать с меткой
Кстате break без метки еще и в switch ошибки не даёт

Мараторий 27.01.2010 20:09

Niar,
Ну а почитать до конца религия не позволяет?
Там написан пример:
var i = 0,
    total = 0,
    a = [1, "str", "10", 2];
while(i < a.length) {
  try {
    if ((typeof a[i] != "number") || isNaN(a[i])) // Если это не число,
      continue; // переходим к следующей итерации цикла.
    total += a[i]; // В противном случае добавляем число к общей сумме.
  } finally {
      i++; // Всегда увеличиваем i, даже если ранее была инструкция continue.
    }
}
alert(total); // 3

PeaceCoder 28.01.2010 00:44

delete

x-yuri 28.01.2010 10:24

Цитата:

Сообщение от Niar
Я читал что eval лучше вообще не использовать

просто он редко нужен, и когда кто-то пытается использовать eval, это обычно значит, что you ain't gonna need it

по поводу ошибок: ловятся все ошибки времени выполнения, не ловится ни одна ошибка компиляции

Niar 28.01.2010 11:52

Какая еще религия

Мараторий 28.01.2010 14:41

Niar,
Не хотел никого обидеть. Просто есть такое выражение. Если вас задел, то извиняюсь.

Niar 28.01.2010 14:45

Да нет всё нормально.


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