Konstrukcja try...catch...finally
jest kluczowa w obsłudze błędów w JavaScript. Kryje jednak w sobie subtelną pułapkę, która może prowadzić do wyjątkowo mylących błędów.
W czym konkretnie tkwi problem? W umieszczeniu instrukcji return
lub throw
wewnątrz bloku finally
.
Użycie ich w tym miejscu nadpisze każdą instrukcję return
oraz throw
z bloków try
i catch
. Może to prowadzić do niezwykle mylącego zachowania i trudnych do zlokalizowania błędów. Taki kod jest szczególnie niebezpieczny, gdy nie pracujemy sami – inni członkowie zespołu mogą spędzić długie godziny na debugowaniu, jeśli nie są zaznajomieni z tą specyficzną właściwością.
Wniosek? Należy unikać umieszczania return
lub throw
w bloku finally
. Jeśli czujesz taką potrzebę, może to być oznaką większego problemu z architekturą Twojego kodu. W rzadkich przypadkach, gdy masz ku temu konkretny powód, dodaj czytelny komentarz, aby oszczędzić zespołowi przyszłych problemów.