Neparedzēto kļūdu ķeršana, try .. catch Šodien darbā izvērtās spraiga diskusija par try .. catch lietošanu iekš JavaScript un Mozilla saimes pārlūkiem (bet īstenībā arī jebkur citur). Strīds bija par to, vai katru funkcijas ķermeni ietvert no sākuma līdz beigām try .. catch blokā vai tomēr nē.
Ar try .. catch konstrukciju apaudzējot visas funkcijas galvenais ieguvums būtu, ka visas neparedzētās kļūdas tiktu noķertas maksimāli tuvu negadījuma vietai. Catch blokā var sarakstīt tā, ka kļūdu nevarēs nepamanīt (ar sarkaniem burtiem pa visu ekrānu, piemēram). Zaudējumi – pasliktinās koda lasāmība, palielinās koda izmērs, tiek zaudēta vai apgrūtināta iespēja kļūdas “eskalēt” izsaukumu ķēdītē uz augšu.
Arguments “kļūdu nevarēs nepamanīt” ir diezgan būtisks: “nenoķertās” kļūdas nonāk iekš JavaScript Console, kur tās var tā arī palikt nepamanītas, nenovērtētas un nesalabotas.
Ar “noķeršanu maksimāli tuvu negadījuma vietai” varam iešaut paši sev kājā. Ja gadās kritiska kļūda, iekšējā funkcija to savā catch blokā apstrādā, un ārējā izsaucējfunkcija turpina strādāt un, iespējams, sataisa ziepes.
Ja Tev ir argumentēts viedoklis par labu kādam no piegājieniem, klāj vaļā! ;)