V Javi lahko ustvarimo lastne izjeme, ki so izpeljani razredi razreda Exception. Ustvarjanje lastne izjeme je znano kot izjema po meri ali uporabniško določena izjema. V bistvu se izjeme po meri Java uporabljajo za prilagajanje izjem glede na potrebe uporabnika.
Razmislite o primeru 1, v katerem razred InvalidAgeException razširi razred Exception.
Z uporabo izjeme po meri lahko imamo vašo lastno izjemo in sporočilo. Tukaj smo posredovali niz konstruktorju nadrazreda, tj. razreda izjeme, ki ga je mogoče pridobiti z metodo getMessage() na objektu, ki smo ga ustvarili.
V tem razdelku se bomo naučili, kako so izjeme po meri implementirane in uporabljene v programih Java.
Zakaj uporabljati izjeme po meri?
Izjeme Java zajemajo skoraj vse splošne vrste izjem, ki se lahko pojavijo pri programiranju. Vendar moramo včasih ustvariti izjeme po meri.
Sledi nekaj razlogov za uporabo izjem po meri:
- Ujeti in zagotoviti specifično obravnavo podmnožice obstoječih izjem Java.
- Izjeme poslovne logike: To so izjeme, povezane s poslovno logiko in potekom dela. Koristno je, da uporabniki aplikacije ali razvijalci razumejo točno težavo.
Če želimo ustvariti izjemo po meri, moramo razširiti razred izjeme, ki pripada paketu java.lang.
Razmislite o naslednjem primeru, kjer ustvarimo izjemo po meri z imenom WrongFileNameException:
public class WrongFileNameException extends Exception { public WrongFileNameException(String errorMessage) { super(errorMessage); } }
Opomba: Napisati moramo konstruktor, ki sprejme niz kot sporočilo o napaki in se imenuje konstruktor nadrejenega razreda.
Primer 1:
Oglejmo si preprost primer izjeme po meri Java. V naslednji kodi konstruktor InvalidAgeException vzame niz kot argument. Ta niz se posreduje konstruktorju nadrejenega razreda Exception z uporabo metode super(). Tudi konstruktor razreda Exception je mogoče poklicati brez uporabe parametra in klicanje metode super() ni obvezno.
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){>
Izhod:
18){>