Bug #023
🪲 Znajdź buga
function getNumber() {
try {
// Some code that can throw an error
return 1
} catch {
return 2
} finally {
return 3
}
}
console.log(getNumber())
Zakładając, że wewnątrz funkcji wywołujemy kod, który może wyrzucić nam wyjątek, umieszczamy go w wyrażeniu try...catch
. Jaka wartość zostanie zwrócona po wywołaniu funkcji? Czy gdyby wyrzucony został wyjątek w bloku try { ... }
kod zachowałby się inaczej?
🧪 Rozwiązanie
function getNumber() {
try {
// Some code that can throw an error
//
} catch {
//
} finally {
return 3
}
}
console.log(getNumber())
W przykładzie z błędem zostanie zwrócona wartość 3
.
Niezależnie od tego czy wewnątrz bloku try
zostanie wyrzucony wyjątek, blok finally
wykona się zawsze, w dodatku bezpośrednio przed wyrażeniami przepływu sterowania (return
, throw
, break
, continue
) w innych blokach.
Używając return
w bloku finally
nie ma sensu abyśmy używali return
w pozostałych blokach, bo po prostu nie zostanie on wykonany.
🎢 Plac zabaw
Otwórz edytor w nowym oknie📑 Linki
❤️ Podobają Ci się bugi JS?
Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js