Kolm tüüpi erandid Java-s

Vead on nii kasutajate kui ka programmeerijate meeletud. Ilmselt ei taha arendajad, et nende programmid kukuksid igal sammul ümber ja kasutajad on nüüd nii harjunud, et neil on vigu programmid, mille osas nad lepivad sellega, et maksavad tarkvara eest, millel on peaaegu kindlasti vähemalt üks tõrge seda. Java on loodud selleks, et anda programmeerijale sportimisvõimalus vigadeta rakenduse kavandamisel. On erandeid, mida programmeerija teab, kui rakendus on interaktsioonis ressursi või kasutajaga ning neid erandeid saab käsitleda. Kahjuks on erandeid, mida programmeerija ei saa kontrollida või jääb lihtsalt kahe silma vahele. Lühidalt, kõik erandid ei ole võrdsed ja seetõttu on programmeerijal mitu tüüpi mõtlemist.

Erand on sündmus, mille tõttu programm ei saa kavandatud täitmisel voolata. Erandeid on kolme tüüpi - kontrollitud erand, tõrge ja käitusaegne erand.

Kontrollitud erand

Kontrollitud erandid on erandid, millega Java-rakendus peaks hakkama saama. Näiteks kui rakendus loeb andmeid failist, peaks ta saama seda hallata

instagram viewer
FileNotFoundException. Lõppude lõpuks pole mingit garantiid, et eeldatav fail läheb sinna, kus ta peaks olema. Failisüsteemis võib juhtuda kõike, millest rakendusel pole aimugi.

Selle näite sammu võrra edasi. Oletame, et kasutame FileReader klassi märkfaili lugemiseks. Kui teil on pilk FileReaderi konstrukatori määratlus Java apis näete meetodi allkirja:

avalik FileReader (stringi failinimi) viskab faili FileNotFoundException.

Nagu näete, väidab konstruktor konkreetselt, et FileReader ehitaja võib visata a FileNotFoundException. See on mõistlik, kuna on väga tõenäoline, et faili nimi Keel on aeg-ajalt vale. Vaadake järgmist koodi:

avalik staatiline tühine pea (string [] args) { FileReader fileInput = null; // Avage sisendfail. fileInput = uus FileReader ("Untitled.txt"); }

Süntaktiliselt on väited õiged, kuid seda koodi ei kompileerita kunagi. Koostaja teab FileReader ehitaja võib visata a FileNotFoundException ja selle erandi käsitlemiseks on vaja helistada koodil. Valikuid on kaks - esiteks saame oma meetodist erandi täpsustada, määrates a viskab klausel ka:

avalik staatiline tühine pea (string [] args) viskab FileNotFoundException { FileReader fileInput = null; // Avage sisendfail. fileInput = uus FileReader ("Untitled.txt"); }

Või saame tegelikult hakkama ka erandiga:

avalik staatiline tühine pea (string [] args) { FileReader fileInput = null; proovida. { // Avage sisendfail. fileInput = uus FileReader ("Untitled.txt"); } saak (FileNotFoundException erand) { // käskige kasutajal fail üles otsida. } }

Hästi kirjutatud Java-rakendused peaksid kontrollitud eranditega hakkama saama.

Vead

Teist tüüpi erandit nimetatakse veaks. Kui ilmneb erand JVM loob erandobjekti. Kõik need objektid tulenevad Viskatav klass. Viskatav klassil on kaks peamist alaklassi - Viga ja Erand. Viga klass tähistab erandit, millega rakendus tõenäoliselt ei tegele.

Neid erandeid peetakse haruldasteks. Näiteks võib JVM-il ressursid otsa saada, kuna riistvara ei suuda toime tulla kõigi protsessidega, millega ta peab toime tulema. Rakendusel on võimalik viga tõrjuda, et sellest kasutajat teavitada, kuid tavaliselt peab rakendus sulgema, kuni selle aluseks olev probleem on lahendatud.

Kestusaja erandid

A käitusaja erand ilmneb lihtsalt seetõttu, et programmeerija on teinud vea. Kood on kirjutatud, see näeb kõik koostajale hea välja ja kui koodi käivitama lähed, kukub see ümber üritas juurdepääsu massiivi elemendile, mida pole olemas või loogikaviga põhjustas meetodi nulliks kutsumise väärtus. Või mis tahes arv programmeerija vigu. Kuid see on okei, me märkame neid erandeid põhjaliku testimisega, eks?

Vead ja Runtime erandid kuuluvad kontrollimata erandite kategooriasse.