Trys tipai „Java“ išimčių

Klaidos yra ne tik vartotojai ir programuotojai. Kūrėjai akivaizdžiai nenori, kad jų programos žlugtų kiekviename žingsnyje, o vartotojai dabar taip įpratę daryti klaidas programos, kurias jie nesąžiningai sutinka mokėti už programinę įrangą, kurioje beveik visada bus bent viena klaida tai. „Java“ yra skirtas suteikti programuotojui galimybę sportuoti kuriant programą be klaidų. Yra išimčių, kurias programuotojas žinos, yra galimybė, kai programa sąveikauja su šaltiniu ar vartotoju, ir šios išimtys gali būti pašalintos. Deja, yra išimčių, kurių programuotojas negali kontroliuoti ar tiesiog nepastebi. Trumpai tariant, visos išimtys nėra vienodos, todėl programuotojui yra keletas tipų, apie kuriuos reikia galvoti.

Išimtis yra įvykis, dėl kurio programa negali vykdyti numatyto vykdymo. Yra trys išimčių tipai: patikrinta išimtis, klaida ir vykdymo laiko išimtis.

Patikrinta išimtis

Pažymėtos išimtys yra išimtys, su kuriomis susiduria „Java“ programa. Pvz., Jei programa nuskaito duomenis iš failo, ji turėtų mokėti

instagram viewer
„FileNotFoundException“. Galų gale nėra jokios garantijos, kad laukiama byla bus ten, kur turėtų būti. Failų sistemoje gali nutikti bet koks dalykas, apie kurį programa nieko neįtaria.

Paimkime šį pavyzdį vienu žingsniu toliau. Tarkime, kad mes naudojame „FileReader“ klasė perskaityti simbolių failą. Jei pažvelgsite į „FileReader“ konstruktoriaus apibrėžimas „Java“ api pamatysite metodo parašą:

viešas „FileReader“ (eilutės failo vardas) meta „FileNotFoundException“.

Kaip matote, konstruktorius konkrečiai teigia, kad „FileReader“ konstruktorius gali mesti a „FileNotFoundException“. Tai yra prasminga, nes labai tikėtina, kad failo pavadinimas Kartkartėmis stygos bus neteisingos. Pažvelkite į šį kodą:

public static void main (stygos [] args) { FileReader fileInput = nulis; // Atidarykite įvesties failą. fileInput = naujas FileReader („Untitled.txt“); }

Sintaksine prasme teiginiai yra teisingi, tačiau šis kodas niekada nebus sudarytas. Sudarytojas žino „FileReader“ konstruktorius gali mesti a „FileNotFoundException“ ir šią išimtį reikia spręsti iškviečiant kodą. Yra du pasirinkimai - pirma, mes galime perduoti išimtį iš savo metodo, nurodydami a meta sąlyga taip pat:

viešas statinis negaliojantis pagrindinis (eilutė [] args) meta FileNotFoundException { FileReader fileInput = nulis; // Atidarykite įvesties failą. fileInput = naujas FileReader („Untitled.txt“); }

Arba mes iš tikrųjų galime elgtis su išimtimi:

public static void main (stygos [] args) { FileReader fileInput = nulis; bandyti. { // Atidarykite įvesties failą. fileInput = naujas FileReader („Untitled.txt“); } pagauti („FileNotFoundException“ išimtis) { // liepkite vartotojui eiti ir surasti failą. } }

Tinkamai parašytos „Java“ programos turėtų sugebėti susidoroti su patikrintomis išimtimis.

Klaidos

Antros rūšies išimtis yra vadinama klaida. Kai atsiranda išimtis JVM sukurs išimties objektą. Visi šie objektai kyla iš Išmetama klasė. Išmetama klasė turi du pagrindinius poklasius - Klaida ir Išimtis. Klaida klasė reiškia išimtį, su kuria programa greičiausiai negalės susidoroti.

Šios išimtys laikomos retomis. Pavyzdžiui, JVM gali pritrūkti išteklių dėl aparatūros, kuri nesugeba susidoroti su visais procesais, su kuriais jai tenka susidurti. Programa gali užfiksuoti klaidą, kad apie tai praneštų vartotojui, tačiau paprastai programa turės užsidaryti, kol bus išspręsta pagrindinė problema.

Trukmės išimtys

A vykdymo laiko išimtis įvyksta vien todėl, kad programuotojas padarė klaidą. Parašėte kodą, viskas kompiliatoriui atrodo gerai, o kai jūs einate paleisti kodo, jis nukrinta bandė pasiekti masyvo elementą, kurio nėra, arba loginė klaida sukėlė metodą, kurį reikia pavadinti nuliu vertės. Arba daugybė klaidų, kurias gali padaryti programuotojas. Bet tai gerai, mes pastebime šias išimtis atlikdami išsamius bandymus, tiesa?

Klaidos ir vykdymo laiko išimtys patenka į nepatikrintų išimčių kategoriją.