U Javi možemo kreirati vlastite iznimke koje su izvedene klase iz klase Exception. Stvaranje vlastite iznimke poznato je kao prilagođena iznimka ili korisnički definirana iznimka. U osnovi, Java prilagođene iznimke koriste se za prilagodbu iznimke prema potrebama korisnika.
Razmotrite primjer 1 u kojem klasa InvalidAgeException proširuje klasu Exception.
Korištenjem prilagođene iznimke, možemo imati vašu vlastitu iznimku i poruku. Ovdje smo proslijedili string konstruktoru superklase, tj. klase iznimke koja se može dobiti pomoću metode getMessage() na objektu koji smo kreirali.
U ovom odjeljku naučit ćemo kako se prilagođene iznimke implementiraju i koriste u Java programima.
Zašto koristiti prilagođene iznimke?
Java iznimke pokrivaju gotovo sve opće tipove iznimaka koje se mogu pojaviti u programiranju. Međutim, ponekad moramo stvoriti prilagođene iznimke.
Slijedi nekoliko razloga za korištenje prilagođenih iznimaka:
- Uhvatiti i pružiti poseban tretman podskupu postojećih Java izuzetaka.
- Iznimke poslovne logike: Ovo su iznimke povezane s poslovnom logikom i tijek rada. Korisno je za korisnike aplikacije ili programere da razumiju točan problem.
Kako bismo kreirali prilagođenu iznimku, moramo proširiti klasu Exception koja pripada paketu java.lang.
Razmotrite sljedeći primjer, gdje stvaramo prilagođenu iznimku pod nazivom WrongFileNameException:
public class WrongFileNameException extends Exception { public WrongFileNameException(String errorMessage) { super(errorMessage); } }
Napomena: Moramo napisati konstruktor koji uzima String kao poruku o pogrešci i zove se konstruktor roditeljske klase.
Primjer 1:
Pogledajmo jednostavan primjer Java prilagođene iznimke. U sljedećem kodu, konstruktor InvalidAgeException uzima niz kao argument. Ovaj niz se prosljeđuje konstruktoru nadređene klase Exception pomoću metode super(). Također, konstruktor klase Exception može se pozvati bez korištenja parametra, a pozivanje metode super() nije obavezno.
TestCustomException1.java
// class representing custom exception class InvalidAgeException extends Exception { public InvalidAgeException (String str) { // calling the constructor of parent Exception super(str); } } // class that uses custom exception InvalidAgeException public class TestCustomException1 { // method to check the age static void validate (int age) throws InvalidAgeException{ if(age <18){ throw an object of user defined exception new invalidageexception('age is not valid to vote'); } else { system.out.println('welcome main method public static void main(string args[]) try calling the validate(13); catch (invalidageexception ex) system.out.println('caught exception'); printing message from invalidageexception system.out.println('exception occured: ' + ex); system.out.println('rest code...'); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/exception-handling/13/java-custom-exception.webp" alt="Java Custom Exception"> <h3>Example 2:</h3> <p> <strong>TestCustomException2.java</strong> </p> <pre> // class representing custom exception class MyCustomException extends Exception { } // class that uses custom exception MyCustomException public class TestCustomException2 { // main method public static void main(String args[]) { try { // throw an object of user defined exception throw new MyCustomException(); } catch (MyCustomException ex) { System.out.println('Caught the exception'); System.out.println(ex.getMessage()); } System.out.println('rest of the code...'); } } </pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/exception-handling/13/java-custom-exception-2.webp" alt="Java Custom Exception"> <hr></18){>
Izlaz:
18){>