Programmēšanas kļūdas ir neizbēgamas. Agrāk vai vēlāk jūsu lietojumprogramma saskarsies ar kādu neparedzētu darbību. Tāpat kā jebkura cita programmēšanas valoda, JavaScript rada kļūdas, ja kodā kaut kas noiet greizi.
Kļūdas traucē normālu lietojumprogrammas plūsmu. Taču tie arī palīdz aizsargāt jūsu lietojumprogrammu no neparedzamas darbības. Ir ļoti svarīgi zināt, kā pareizi rīkoties ar kļūdām.
Kāpēc kļūdu apstrāde ir svarīga?
Kļūdu apstrāde palīdz uzlabot lietotāja pieredzi. Varat aizstāt JavaScript noklusējuma un dažkārt detalizētas kļūdas ar cilvēkiem lasāmākiem kļūdu ziņojumiem. Varat graciozi novērst dažu kļūdu cēloņus un turpināt programmas darbību, nevis pārtraukt to.
Kļūdu apstrāde ir noderīga arī izstrādes laikā. Varat uztvert izpildlaika kļūdu un veikt ar to kaut ko noderīgu, piemēram, reģistrējot to pārlūkprogrammas konsolē. Tas ir daudz elegantāk nekā kļūda, kas izraisa avāriju un nezina, kur un kāpēc radās kļūda.
JavaScript iebūvēto kļūdu struktūra
JavaScript kļūdas ir objekti ar trim īpašībām:
- nosaukums: Šis ir kļūdas nosaukums. Piemēram, ja trūkst mainīgā nosaukuma, tiks parādīta kļūda ar nosaukumu SyntaxError.
- ziņa: Šis ir ziņojuma pamatteksts un tekstā izskaidro kļūdu.
- cēlonis: varat izmantot šo rekvizītu ar pielāgotām kļūdām, lai izsekotu zvanu steku.
Izplatītākie JavaScript kļūdu veidi
Šeit ir dažas biežāk sastopamās kļūdas, kas tiek atrastas JavaScript.
Sintakses kļūda
Sintakses kļūdas var rasties, ja JavaScript mēģina interpretēt jūsu kodu. Ja kods neatbilst pareizajai sintaksei, tiks parādīta kļūda. Dažas izplatītas kļūdas, kas var izraisīt sintakses kļūdas, ir šādas:
- Trūkst mainīgo nosaukumu.
- Aiz funkcijas trūkst “}”.
- Pēc nosacījuma trūkst “)”.
Atsauces kļūda
Atsauces kļūdas rodas, kad programma mēģina atsauce uz mainīgo kas nav pieejams vai ir ārpus darbības jomas.
Tipa kļūda
JavaScript var izraisīt tipa kļūdu, ja nevar veikt darbību, jo sagaidāmais veids atšķiras no tā, ko tas saņem.
URIE kļūda
Šī kļūda rodas, ja nepareizi izmantojat globālo URI apstrādes funkciju, piemēram, decodeURIComponent(). Tā rezultātā kodēšana vai dekodēšana neizdodas.
AggregateError
Šo kļūdu izmanto, lai attēlotu vairākas kļūdas, kas ietītas vienā. Izmantojiet to, ja vēlaties vienlaikus radīt daudzas kļūdas. Piemēram, Promise.any() var ievadīt AggregateError(), kad visi tam nodotie solījumi tiek noraidīti.
Iekšēja kļūda
InternalError tiek izmests, ja JavaScript dzinējā rodas kļūda.
RangeError
Dažas funkcijas nosaka vērtību diapazonu, ko varat nodot kā argumentus. Šī kļūda rodas, mēģinot nodot vērtību, kas nav iekļauta šajā diapazonā.
Kļūdu apstrāde ar mēģinājumu... Noķert bloku
JavaScript nodrošina iebūvētu izņēmumu apstrādes funkcionalitāti ar pamēģini… noķer… beidzot bloķēt. Tas arī ļauj jums parādīt savas kļūdas, izmantojot mest operators.
Varat izmantot try…catch bloku, lai apstrādātu kļūdas, kas rodas izpildlaikā. Jūs ierakstāt derīgu kodu, kuru plānojat pareizi izpildīt mēģinājuma blokā. Noķeršanas blokā varat ierakstīt kļūdu apstrādes kodu.
mēģināt {
// Derīgs Javascript kods
} noķert (kļūda) {
// Roktura kļūda
} beidzot {
// Izpildīts pat tad, ja rodas kļūda
}
Noķeršanas bloks tiek ignorēts, ja kods mēģinājuma blokā neizraisa kļūdas. Ja tas rada kļūdu, izpilde pāriet uz uztveršanas bloku. Kods pēdējā blokā tiek palaists neatkarīgi no tā, vai rodas kļūda. Šis bloks nav obligāts, tāpēc izlaidiet to, ja jums tas nav nepieciešams.
Kodam, ko iekļaujat mēģinājuma blokā, ir jābūt derīgam. Ja tā nav, JavaScript parādīs parsēšanas kļūdu.
Apskatīsim praktisku piemēru:
mēģināt {
konsole.log (teksts)
} noķert (kļūda) {
konsole.log(kļūda.ziņa)
} beidzot {
console.log("Tiks izpildīts neatkarīgi no tā")
}
Šī programma mēģina reģistrēt teksta mainīgā vērtību. Tā kā šis mainīgais nav definēts, programma radīs kļūdu. Šī kļūda tiek uzdrukāta uz konsoles uztveršanas blokā. Pēc tam palaižas pēdējais bloks un izdrukā savu ziņojumu.
Atsauces kļūda: teksts nav definēts
Tiks izpildīts neatkarīgi no tā
Situācijās, kad jums ir jāizceļ sava kļūda, izmantojiet mest operators.
Apsveriet šo piemēru, kas rada kļūdu, ja dati ir nepatiesi:
konst dati = getData()
mēģināt {
if (!data) {
mest "Nav datu"
}
konsole.log (dati)
// Turpināt
} noķert(kļūda) {
konsole.log (kļūda) // "Nav datu"
}
Šajā piemērā programma izsauc funkciju getData() un piešķir tās rezultātu datu mainīgajam. Mēģināšanas blokā bloks rada pielāgotu kļūdu, ja dati ir tukši. Noķeršanas bloks uztver šo kļūdu un reģistrē to konsolē.
Kļūdu izmešana ir ļoti izdevīga izstrādes laikā. Varat izmantot pielāgoto kļūdas ziņojumu, lai saprastu, kāpēc jūsu lietojumprogramma nedarbojas, kā paredzēts.
Kā parādīts šajā piemērā, kļūdas objektam varat izmantot virkni. Jūs faktiski varat iemest jebkuru JavaScript izteiksmi kā kļūdu. Tomēr, lai nodrošinātu konsekvenci ar iebūvētajām kļūdām, izmantojiet JavaScript objektu, kurā ir nosaukums un ziņojums.
mest {
nosaukums: "Kļūdas nosaukums",
ziņa: "Kļūdas ziņojums"
}
Varat arī izmantot JavaScript iebūvētos konstruktorus, izmetot kļūdas. Šie konstruktori cita starpā ietver Error, SyntaxError un ReferenceError.
Lai radītu kļūdu, izmantojot Error konstruktoru, izmantojiet šo kodu:
mestjaunsKļūda("Nav datu")
Tagad varat atsaukties uz vārdu un ziņojumu.
konsole.log (error.name) // Kļūda
konsole.log (error.message) // Nav datu
JavaScript kļūdas objekta paplašināšana
Pielāgota kļūdu klase ir noderīga, apstrādājot kļūdas, kas neatbilst JavaScript jau nodrošinātajiem objektiem. Piemēram, iespējams, vēlēsities izolēt datu validācijas kļūdu kā konkrētu veidu, ko sauc par ValidationError.
Jūs varat izmantot a JavaScript ES2015 klase lai izveidotu pielāgotu kļūdu klasi.
klasēValidation ErrorpagarinaKļūda{
konstruktors(ziņa) {
super(ziņa);
šis.nosaukums = "Validation Error";
}
}
Izmetiet kļūdu, izmantojot ValidationError klasi, piemēram:
mestjauns ValidationError ("Jūsu kļūdas ziņojums")
Izmestā kļūda būs objekts ar nosaukumu un ziņojuma vērtībām.
{
nosaukums: "Validation Error",
ziņa: "Jūsu kļūdas ziņojums"
}
Kļūdas var palīdzēt
Kļūdu apstrāde ir būtiska programmēšanas sastāvdaļa neatkarīgi no tā, kuru valodu izmantojat. JavaScript ir lielisks atbalsts kļūdu palielināšanai un uztveršanai izņēmumu stilā. Tam ir arī vairāki iebūvēti kļūdu veidi, kurus varat apstrādāt un izmantot saviem gadījumiem.
Dažas kļūdas, piemēram, sintakses kļūdas, var palikt nepamanītas, ja rakstāt JavaScript “nepareizā režīmā”. Stingrā režīma izmantošana ļauj JavaScript uztvert kļūdas, kuras tas citādi ignorētu.