Siin on mõned parimad tavad Node.js vahevara vigade käsitlemiseks:
1. Kasutage tsentraliseeritud tõrkekäsitluse vahevara:
   - Looge spetsiaalne tõrketöötluse vahevara funktsioon, mis asub teie vahevaravirna lõpus.
   - See vahevara peaks käsitlema kõiki vahevara ahela kaudu levivaid vigu.
   - Vigade käsitlemise vahevara peaks vastutama logimise, kliendile vastamise ja võimalike välisteenuste teavitamise eest.
2. Eristage töö- ja programmeerimisvigu:
   - Töötõrked on käitusaegsed vead, mida võib ette näha, näiteks andmebaasiühenduse ebaõnnestumine või kasutaja vigane sisend.
   - Programmeerimisvead on vead koodis, näiteks tüübi- või loogikavead.
   - Käsitlege töövigu graatsiliselt, edastades kliendile sisukaid veateateid. Programmeerimisvigade korral katkestage protsess ja laske protsessihalduril (nt PM2) rakendus taaskäivitada.
3. Kasutage järjepidevaid veakäsitluse mustreid:
   - Kasutage asünkroonsete toimingute jaoks järjekindlalt kas tagasihelistusi, lubadusi või asünkroonimist/ootmist.
   - Lubaduste kasutamisel lisage tagasilükkamiste tabamiseks alati töötleja ".catch()".
   - Kui kasutate asünkroonset/ootmist, mähitage asünkroonsed kõned alati proovi/jäägi blokki.
4. Esitage sisukaid veateateid:
   - Veenduge, et teie veateated on informatiivsed ja pakuksid piisavalt konteksti, et klient saaks aru, mis valesti läks.
   - Vältige üldisi veateateid, nagu "Sisemine serveri viga". Selle asemel esitage vea kohta konkreetsed üksikasjad.
   - Kaaluge veavastusesse täiendavate metaandmete lisamist, nagu kordumatu veakood või viide dokumentatsioonile.
5. Logivead asjakohaselt:
   - Logige vead sobival tasemel (viga, hoiatus, teave, silumine) sõltuvalt probleemi tõsidusest.
   - Lisage logisõnumitesse asjakohane kontekst, näiteks päringu üksikasjad, kasutajateave ja virna jälg.
   - Kaaluge integreerimist logimisteenusega, nagu Sentry või Datadog, et tsentraliseerida vigade logimine ja jälgimine.
6. Käitlege asünkroonseid vigu õigesti:
   - Vahevaras asünkroonsete toimingute kasutamisel veenduge, et käsitlete kõiki võimalikke vigu.
   - Kui viga ei lahendata, võib see põhjustada mälulekkeid või kogu rakenduse kokkujooksmist.
   - Kasutage plokke „try/catch” või töötlejaid „.catch()”, et tagada kõigi asünkroonsete vigade õige käsitlemine.
7. Rakendage Graceful Shutdown:
   - Kui rakenduses ilmneb kriitiline viga, veenduge, et server lülitub sujuvalt välja.
   - See võib hõlmata andmebaasiühenduste sulgemist, logide puhastamist ja seiresüsteemide teavitamist.
   - Rakenduse graatsilise sulgemise ja taaskäivitamiseks kasutage protsessihaldurit (nt PM2).
8. Kasutage vigade käsitlemise teeke:
   - Kaaluge sisendi kinnitamiseks ja vigade järjepidevaks käsitlemiseks vigade käsitlemise teeke, nagu "express-validator" või "celebrate".
   - Need teegid aitavad teil veakäsitlust tsentraliseerida ja pakkuda kliendile paremaid veateateid.
Neid parimaid tavasid järgides saate luua tugevaid ja usaldusväärseid Node.js-i rakendusi, mis käsitlevad vigu graatsiliselt ja pakuvad suurepärast kasutuskogemust.
Tsitaadid:[1] https://stackify.com/node-js-error-handling/
[2] https://www.cloudthat.com/resources/blog/error-handling-middleware-in-node-js-for-building-robust-and-reliable-applications
[3] https://www.toptal.com/nodejs/node-js-error-handling
[4] https://sematext.com/blog/node-js-error-handling/
[5] https://www.tritondatacenter.com/node-js/production/design/errors
