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.