Javassa voimme luoda omia poikkeuksiamme, jotka ovat Exception-luokan johdettuja luokkia. Oman poikkeuksen luominen tunnetaan mukautettuna poikkeuksena tai käyttäjän määrittämänä poikkeuksena. Periaatteessa Java mukautettuja poikkeuksia käytetään mukauttamaan poikkeus käyttäjän tarpeiden mukaan.
Harkitse esimerkkiä 1, jossa InvalidAgeException-luokka laajentaa Exception-luokkaa.
Mukautetun poikkeuksen avulla meillä voi olla oma poikkeus ja viesti. Tässä olemme välittäneet merkkijonon superluokan eli poikkeusluokan rakentajalle, joka voidaan saada getMessage()-metodilla luomassamme objektissa.
Tässä osiossa opimme kuinka mukautettuja poikkeuksia toteutetaan ja käytetään Java-ohjelmissa.
Miksi käyttää mukautettuja poikkeuksia?
Java-poikkeukset kattavat lähes kaikki yleiset poikkeukset, joita ohjelmoinnissa voi esiintyä. Joskus meidän on kuitenkin luotava mukautettuja poikkeuksia.
Seuraavassa on muutamia syitä käyttää mukautettuja poikkeuksia:
- Ottaa kiinni ja tarjota erityistä hoitoa olemassa olevien Java-poikkeuksien osajoukolle.
- Liiketoimintalogiikan poikkeukset: Nämä ovat liiketoimintalogiikkaan ja työnkulkuun liittyviä poikkeuksia. Sovelluksen käyttäjien tai kehittäjien on hyödyllistä ymmärtää tarkka ongelma.
Mukautetun poikkeuksen luomiseksi meidän on laajennettava java.lang-pakettiin kuuluvaa Exception-luokkaa.
Harkitse seuraavaa esimerkkiä, jossa luomme mukautetun poikkeuksen nimeltä WrongFileNameException:
public class WrongFileNameException extends Exception { public WrongFileNameException(String errorMessage) { super(errorMessage); } }
Huomautus: Meidän on kirjoitettava konstruktori, joka ottaa merkkijonon virhesanomana, ja sitä kutsutaan yläluokan konstruktoriksi.
Esimerkki 1:
Katsotaanpa yksinkertainen esimerkki Java mukautetusta poikkeuksesta. Seuraavassa koodissa InvalidAgeExceptionin rakentaja ottaa argumentiksi merkkijonon. Tämä merkkijono välitetään yläluokan Exception rakentajalle super()-menetelmällä. Myös Exception-luokan konstruktoria voidaan kutsua ilman parametria eikä super()-metodin kutsuminen ole pakollista.
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){>
Lähtö:
18){>