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 заменяет старое исключение на новое