Эээ у Дэвида написано что один из вариантов использования finally если try был закончен из-за инструкции break, continue или return. Если break можно еще использовать с меткой то как c continue и return там же SyntaxError
|
Мараторий, еще можно так:
try { eval.call(document, '1') } catch ( ex ) { console.info(ex) }
Практически -- не знаю, разве что действительно отлавливать некорректное использование eval. Здесь Есть дискуссия на подобную тему, вроде бы. |
Есть еще места где можно почитать об этом на русском?
|
гугл ;)
|
Я ему не верю)
Он один раз привёл меня на сайт где можно 1 000 000$ заработать и нифига. Обманул:nono: |
А можно я вас приведу пару примеров и вы мне расскажите правильно я понял алгоритм работы кода?
|
Цитата:
Цитата:
|
try {
throw new Error(404)
}
finally {
alert("Пыщь-пыщь")
}
try{
throw new Error(405)
}
catch(e){
alert(e.message)
}
Тут сначала исполняется finally. Так как catch нету он ищет его дальше. Однако catch принадлежит другому try и в результате ошибка.
try{
throw new Error(405)
try {
throw new Error(404)
}
finally {
alert("Пыщь-пыщь")
}
}
catch(e){
alert(e.message)
}
Тут сразу находит 405 ошибку и в результате остальной код try не исполняется и ищется catch, и находится.
try{
try {
throw new Error(404)
}
finally {
alert("Пыщь-пыщь")
}
}
catch(e){
alert(e.message)
}
Тут сразу находит 404 ошибку и ищется catch. Но он находит только finally и исполняет его. Потом ищет catch на внешнем уровне и находит.
try {
throw new Error(404)
}
finally {
alert("Пыщь-пыщь")
throw new Error(406)
}
А тут finally заменяет старое исключение на новое |
Да, вроде все верно.
Однако последний пример не тривиален для понимания. |
Не понятно только как try может быть завершён continue и return
|
| Часовой пояс GMT +3, время: 18:11. |