Ievads izņēmuma situācijās JavaScript
Tagad mēs apskatīsim izņēmuma situācijas JavaScript. Sākumā es veikšu ievadu, kurā būs piemēri izņēmuma situācijām kopumā jebkurā programmēšanas valodā, un pēc tam izpratīsim, kā tas izskatās JavaScript.
Kad mēs rakstām savas programmas, mēs netieši pieņemam, ka visi mūsu izmantotie programmiski-tehniskie mehānismi darbosies korekti.
Tomēr tas ne vienmēr tā ir. Pārsūtot datus pa tīklu, notiek savienojuma pārraušana un dati ienāk pie mums nekorektā veidā, vai vispār neienāk. Rakstot failu, izrādās, ka mums atvēlētā vieta cietajā diskā ir beigusies, un fails nevar ierakstīties. Lasot failu, izrādās, ka tāda faila neeksistē un mums nav no kurienes lasīt. Drukājot datus uz printera, notiek kabeļa pārraušana, kas savieno printeri un datoru.
Visām aprakstītajām situācijām ir kopīga būtība: notiek kāds traucējums, kas noved pie plānotās operācijas pabeigšanas neiespējamības vai bezjēdzības.
Ir arī situācijas, kurās notiek kāda kļūda, kas nav traucējums. Piemēram, jūs jautājat lietotājam viņa e-pastu, un viņš ievada e-pastu nekorektā formātā. Skaidrs, ka mūsu programma nevar turpināt apstrādāt e-pastu, jo tas nav korekts. Tomēr tā nav izņēmuma situācija. Mūsu programma pati var izlabot situāciju: tā izvadīs kļūdas ziņojumu un lietotājs atkārtos savu ievadi.
Patiesībā atšķirība starp traucējumu un ne traucējumu ir diezgan neskaidra. Notikums, ko viena programma var interpretēt kā izņēmuma situāciju, cita programma var interpretēt kā kādu kļūdu, ar ko tā var tikt galā.
Kritērijs šeit ir šāds: ja, rodoties problēmai, jūsu programma var turpināt veikt to, kam tā ir paredzēta, tad tā nav izņēmuma situācija, bet ja nevar - tad jā, tā ir izņēmums.
Piemēram, mums ir programma, kurai jā jautā lietotāja e-pasts. Ja lietotājs ir ievadījis e-pastu nekorektā formātā - tas nav traucējums. Tā ir sagaidāma problēma, un mūsu programma būs jautājusi lietotājam e-pastu tik daudz reizes, kamēr viņš to neievadīs korekti.
Pieņemsim, ka mūsu programma, kas jautā e-pastu, arī ir jāsūta šis korektais e-pasts pa internetu. Tajā pašā laikā izrādās, ka internets nedarbojas. Tā jau ir problēma: programma nekādā veidā nevarēs nosūtīt datus pa internetu, ja internets nedarbojas. Programma, tomēr, var turpināt savu izpildi: tā var izvadīt informāciju par problēmu, atkārtot sūtīšanas mēģinājumu pēc kāda laika, un tā tālāk. Bet šīs darbības vairs nav gluži tas, kam programma bija paredzēta, jo galvenā darbība - e-pasta sūtīšana programma nevarēs veikt.
Ļoti bieži tas, vai situācija ir izņēmuma vai ne, ir atkarīgs no programmēšanas valodas. Daudzās valodās, ja pēkšņi notiek dalījums ar nulli - tas tiek uzskatīts par izņēmumu (tā kā ar nulli dalīt nevar), bet JavaScript - netiek uzskatīts (JavaScript ar nulli dalīt var).