Pažeidimai yra fundamentalus konceptas Java programavime, kuris padeda jums susidoroti su netikėtais situacijomis jūsų kode. Kol jūs jau išmokote, kaip tvarkyti išimtis, dabar atėjo laikas žengti žingsnį toliau: mesti ir apibrėžti savo pačių išimtis. Šiame vadove parodysiu, kaip galite generuoti išimtis savo kode ir kurti suasmenintas išimčių klases, kurios padės jūsų kodui būti aiškesniu ir patvaresniu.
Pagrindinės įžvalgos
- Galite mesti savo pačių išimtis Java, kad geriau tvarkytumėte konkrečias klaidų situacijas.
- Sukurdami savo išimčių klases, galite padaryti savo klaidų tvarkymą natūralesnį ir suprantamesnį.
- Išmoksite, kaip mesti išimtis tiek metoduose, tiek dirbdami su Try-Catch blokais.
Žingsnis po žingsnio vadovas
1. Atgaivinti išimčių tvarkymo žinias
Pirmiausia svarbu prisiminti, kaip atrodo išimčių tvarkymas Java. Galite prisiminti try-catch konstrukcijas, kurios leidžia jums sugauti klaidas ir atitinkamai į jas reaguoti. Ankstesniame procese matėte, kaip tvarkyti NumberFormatException, kai vykdoma neteisinga konversija iš String į skaičių.
2. Išimtys jūsų pačių kode
Dabar norime pasižiūrėti, kaip galite mesti išimtis savo kode. Tai gali būti ypač naudinga, kai norite savo programose apibrėžti konkrečias klaidų sąlygas, kurios Java nėra tvarkomos pagal numatytuosius nustatymus.

3. Sukurti klasę validavimui
Pasižiūrėkime į pavyzdžio klasę, kurią pavadinsime MyValidator. Ši klasė turi metodą, kuris tikisi validuoti kodo segmentą, mūsų atveju - PIN kodą. Jei įvestas PIN kodas neatitinka tam tikros reikšmės, bus mestas pažeidimas.
4. Klaidų generavimas ir gaudymas
ValidateCode metode galite sukurti if užklausą. Jei kodas neatitinka laukiamo vertės, jūs mesti naują pažeidimą, kuris atrodo taip: throw new Exception("Tik 42 yra atsakymas į visus klausimus.");. Šiuo atveju naudojate throw raktinį žodį, kad sugeneruotumėte išimtį.
5. Metodo parašo pritaikymas
Norėdami signalizuoti, kad šis metodas gali mesti išimtį, turite įtraukti throws raktinį žodį į metodo parašą. Dėl to dabar metodas vadinasi: public void validateCode(int code) throws Exception. Tokiu būdu aiškiai nurodomas išimties metimas, ir visi metodo kvietėjai privalo su juo susidoroti.
6. Išimties tvarkymas Try-Catch bloke
Norėdami sugauti išimtį, galite įdėti metodą į try-catch bloką. Tokiu atveju, kai įvyksta pažeidimas, bus vykdomas kodas catch bloke, kuriame atliksite specifinį klaidų valdymą, pavyzdžiui, išvesite klaidos pranešimą.
7. Pasirinktiniai išimčių perdavimai
Taip pat galite pagalvoti apie tai, kad sugautą išimtį vėl mesti, kad ją perduotumėte aukštesniam logikos sluoksniui. Tačiau turite atsižvelgti į tai, kad tai prasminga tik tuo atveju, jei nesate pagrindiniame metode, nes čia po catch bloko paprastai nėra daugiau kodo.
8. Savo išimčių privalumai
Didžiausias savo išimčių klasių privalumas yra tas, kad jos yra intuityviai pavadintos ir specifinės naudojimo atvejui. Vietoj to, kad dirbtumėte su bendromis išimtimis, galite apibrėžti specifines klases, kaip NotFoundException arba InvalidInputException. Jos padeda jums ne tik identifikuoti klaidas, bet ir rasti klaidas bei prižiūrėti savo kodą.

Santrauka – Išimčių metimas ir apibrėžimas Java
Metant ir apibrėžiant savo išimtis gaunate galingą įrankį, kad efektyviai tvarkytumėte klaidas ir padarytumėte savo kodą skaitomesnį. Galite suformuluoti specifines išimčių sąlygas ir gerinti klaidų logišką atskyrimą, taip padidindami savo programos prižiūrimumą.
Dažnai užduodami klausimai
Koks skirtumas tarp checked ir unchecked išimčių?Checked išimtys privalo būti apdorojamos metodo paraše, kai unchecked išimtys to nereikalauja.
Kodėl turėčiau kurti savo išimtis?Savo išimtys padeda teikti konkrečias klaidų žinutes, kurios siekia geriau identifikuoti problemas ir padaryti kodą skaitomesnį.
Kaip mesti išimtį metode?Naudojate raktinį žodį throw, po kurio seka nauja išimties instancija.
Ar turiu nurodyti metodo deklaracijoje, kad mėtu išimtį?Taip, tam naudojate throws raktinį žodį metodo paraše.
Ką daryti, jei neapdorosiu išimties?Paprastai programa baigsis su vykdymo išimtimi, nebent išimtis yra neteisinga ir neapdorota.