Označene i neprovjerene iznimke u Javi
1. Pregled
Iznimke Java spadaju u dvije glavne kategorije: provjerene iznimke i neprovjerene iznimke. U ovom ćemo članku pružiti nekoliko uzoraka koda o tome kako ih koristiti.
2. Označene iznimke
Općenito, provjerene iznimke predstavljaju pogreške izvan kontrole programa. Na primjer, konstruktor FileInputStream baca FileNotFoundException ako ulazna datoteka ne postoji.
Java provjerava provjerene iznimke u vrijeme prevođenja.
Stoga bismo trebali koristiti baca ključna riječ za proglašenje provjerene iznimke:
privatna statička praznina checkExceptionWithThrows () baca FileNotFoundException {Datoteka datoteka = nova datoteka ("ne_postojeća_datoteka.txt"); FileInputStream stream = novi FileInputStream (datoteka); }
Također možemo koristiti i pokušaj uhvatiti blok za obradu provjerene iznimke:
privatna statička praznina checkExceptionWithTryCatch () {Datoteka datoteke = nova datoteka ("ne_postojeća_datoteka.txt"); isprobajte {FileInputStream stream = new FileInputStream (datoteka); } catch (FileNotFoundException e) {e.printStackTrace (); }}
Neke uobičajene provjerene iznimke u Javi su IOException, SQLException, i ParseException.
The Iznimka razred je superklasa provjerenih iznimaka. Stoga proširenjem možemo stvoriti prilagođenu provjerenu iznimku Iznimka:
javna klasa IncorrectFileNameException proširuje Exception {public IncorrectFileNameException (String errorMessage) {super (errorMessage); }}
3. Neoznačene iznimke
Ako program baci neprovjerenu iznimku, to odražava neku pogrešku unutar programske logike. Na primjer, ako broj podijelimo s 0, Java će baciti ArithmeticException:
privatna statička praznina divideByZero () {int brojitelj = 1; nazivnik int = 0; int rezultat = brojnik / nazivnik; }
Java ne provjerava neprovjerene iznimke u vrijeme prevođenja. Dalje, ne moramo prijavljivati neprovjerene iznimke u metodi s baca ključna riječ. I premda gornji kod nema grešaka tijekom vremena kompajliranja, bacit će ga ArithmeticException za vrijeme izvođenja.
Neke uobičajene neprovjerene iznimke u Javi su NullPointerException, ArrayIndexOutOfBoundsException, i IlegalArgumentException.
The RuntimeException klasa je superklasa svih neprovjerenih iznimaka. Stoga, proširivanjem možemo stvoriti prilagođenu neprovjerenu iznimku RuntimeException:
javna klasa NullOrEmptyException proširuje RuntimeException {public NullOrEmptyException (String errorMessage) {super (errorMessage); }}
4. Kada koristiti označene iznimke i neprovjerene iznimke
Dobra je praksa koristiti iznimke u Javi kako bismo mogli odvojiti kod za rukovanje pogreškama od uobičajenog koda. Međutim, moramo odlučiti koju ćemo vrstu iznimke baciti. Oracle Java dokumentacija pruža smjernice o tome kada koristiti provjerene iznimke i neprovjerene iznimke:
„Ako se od klijenta može opravdano očekivati da se oporavi od iznimke, učinite to provjerenom iznimkom. Ako klijent ne može učiniti ništa da se oporavi od iznimke, učinite to neprovjerenom iznimkom. "
Na primjer, prije nego što otvorimo datoteku, prvo možemo provjeriti naziv ulazne datoteke. Ako je korisničko ime korisničke datoteke neispravno, možemo izbaciti prilagođenu provjerenu iznimku:
if (! isCorrectFileName (fileName)) {throw new IncorrectFileNameException ("Netočno ime datoteke:" + fileName); }
Na taj način možemo oporaviti sustav prihvaćanjem drugog korisničkog imena ulazne datoteke. Međutim, ako je naziv ulazne datoteke null pokazivač ili je to prazan niz, to znači da imamo neke pogreške u kodu. U ovom bismo slučaju trebali izbaciti neprovjerenu iznimku:
if (fileName == null ||Name datoteke.isEmpty ()) {throw new NullOrEmptyException ("Naziv datoteke je null ili prazan."); }
5. Zaključak
U ovom smo članku razgovarali o razlici između provjerenih i neprovjerenih iznimaka. Također smo pružili nekoliko primjera koda da pokažemo kada koristiti provjerene ili neprovjerene iznimke.
Kao i uvijek, sav kôd pronađen u ovom članku možete pronaći na GitHub-u.