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