Erandid on fundamentaalne kontseptsioon Java programmeerimises, mis aitab sul tegeleda ootamatute olukordadega sinu koodis. Kui oled juba õppinud, kuidas erandeid käsitleda, on nüüd aeg astuda sammu edasi: visata ja defineerida enda erandeid. Selles juhendis näitan ma, kuidas saad ise erandeid oma koodis genereerida ja isikupäraseid erandiklasside loomise abil muuta oma koodi selgemaks ja vastupidavamaks.
Olulisemad teadmised
- Sa saad oma erandeid Java-s visata, et paremini tegeleda spetsiifiliste veasituatsioonidega.
- Omandades oma erandiklasside defineerimise, saad muuta oma veahaldust loomulikumaks ja arusaadavamaks.
- Sa õpid, kuidas visata erandeid nii meetodites kui ka töötada koos Try-Catch plokkidega.
Sammu-sammult juhend
1. Eranditega töötamise värskendamine
Alguses on oluline meenutada, kuidas eranditega Java-s tegeletakse. Sellega seoses saad meenutada näiteks try-catch konstruktsioone, mis võimaldavad sul vigu püüda ja vastavalt neile reageerida. Varasemas õppes oled näinud, kuidas käsitleda NumberFormatExceptioni, kui stringi numbriks konverteerimisel tekib vale väärtus.
2. Erandite viskamine oma koodis
Nüüd tahame uurida, kuidas saad erandeid oma koodis visata. See võib olla eriti kasulik, kui soovid määratleda spetsiifilisi veatingimusi, mida Java vaikimisi ei käsitle.

3. Kliendi valideerimise klassi loomine
Vaatame näidisklass, mida nimetame MeinValidatoriks. See klass sisaldab meetodit, mis ootab valideerimist vajavat koodisegmenti, meie juhul pin-koodi. Kui sisestatud pin-kood ei vasta kindlale väärtusele, visatakse erand.
4. Vigade genereerimine ja püüdmine
ValidateCode meetodis saad luua if-kontrolli. Kui kood ei vasta oodatud väärtusele, viska uus erand, mis näeb välja järgmine: throw new Exception("Ainult 42 on vastus kõikidele küsimustele.");. Siin kasutad sa throw märksõna, et genereerida erand.
5. Meetodi signatuuri kohandamine
Et signaalida, et see meetod võib erandi visata, pead sa lisama throws märksõna meetodi signatuuri. Seega on meetod nüüd: public void validateCode(int code) throws Exception. Sel viisil edastatakse erandi viskamine selgelt ja kõik meetodi kutsujad on kohustatud sellega tegelema.
6. Erandi käsitlemine Try-Catch plokis
Erandi püüdmiseks saad meetodi panna try-catch plokki. Kui erand ilmneb, käivitatakse kood catch-plokis, kus teed spetsiifilise veahaldust, näiteks kuvades veateate.
7. Valikuline erandite uuesti viskamine
Sa võid ka mõelda püüdnud erandi uuesti viskamisele, et edastada see kõrgemale loogikatasemele. Siiski pead arvestama, et see on mõttekas ainult siis, kui sa ei ole peamises meetodis, kuna siin ei järgne tavaliselt muud koodi pärast catch-plokki.
8. Omandatud erandite eelised
Omandatud erandite klasside suurim eelis on, et need on intuitsiooniga nimetatud ja spetsiifilised rakenduse jaoks. Selle asemel, et töötada üldiste eranditega, saad määratleda spetsiifilisi klasse nagu NotFoundException või InvalidInputException. Need aitavad sul mitte ainult vigu tuvastada, vaid ka veaparanduste tegemisel ja sinu koodi hooldamisel.

Kokkuvõte - Erandite viskamine ja määratlemine Java-s
Viskates ja määratledes oma erandeid, saad tõhusa tööriista vigade tõhusaks käsitlemiseks ja oma koodi loetavamaks muutmiseks. Sa saad määratleda spetsiifilisi eranditingimusi ja parandada vigade loogilist eristamist, mis suurendab sinu programmi hooldatavust.
Korduma kippuvad küsimused
Mis on erinevus kontrollitud ja kontrollimata erandite vahel?Kontrollitud erandeid tuleb meetodi signatuuris käsitleda, samas kui kontrollimata erandeid see ei pea olema.
miks peaksin looma oma erandeid?Omandatud erandid aitavad spetsiifiliste veateadete abil tuvastada probleeme ja muuta koodi loetavamaks.
Kuidas visata erandit meetodis?Sa kasutad märksõna throw, millele järgneb uus erandi instants.
Kas pean meetodi deklareeringus näitama, et viskan erandi?Jah, selleks kasuta throws märksõna meetodi signatuuris.
Mis juhtub, kui ma ei käsitle erandit?Programm lõpetab tavaliselt käitusaja erandi, välja arvatud juhul, kui erand on vale ja mitte käsitletud.