У Јави можемо креирати сопствене изузетке који су изведене класе класе Екцептион. Креирање сопственог изузетка познато је као прилагођени изузетак или кориснички дефинисан изузетак. У основи, Јава прилагођени изузеци се користе за прилагођавање изузетка према потребама корисника.
Размотрите пример 1 у којем класа ИнвалидАгеЕкцептион проширује класу Екцептион.
Користећи прилагођени изузетак, можемо имати ваш сопствени изузетак и поруку. Овде смо проследили стринг конструктору суперкласе, односно класе изузетка која се може добити коришћењем методе гетМессаге() на објекту који смо креирали.
У овом одељку ћемо научити како се прилагођени изузеци имплементирају и користе у Јава програмима.
Зашто користити прилагођене изузетке?
Јава изузеци покривају скоро све опште типове изузетака који се могу појавити у програмирању. Међутим, понекад морамо да креирамо прилагођене изузетке.
Ево неколико разлога за коришћење прилагођених изузетака:
- Да ухвати и пружи специфичан третман за подскуп постојећих Јава изузетака.
- Изузеци пословне логике: Ово су изузеци који се односе на пословну логику и ток посла. Корисно је да корисници апликације или програмери разумеју тачан проблем.
Да бисмо креирали прилагођени изузетак, морамо да проширимо класу Екцептион која припада пакету јава.ланг.
Размотрите следећи пример, где креирамо прилагођени изузетак под називом ВронгФилеНамеЕкцептион:
public class WrongFileNameException extends Exception { public WrongFileNameException(String errorMessage) { super(errorMessage); } }
Напомена: Морамо да напишемо конструктор који узима стринг као поруку о грешци и зове се конструктор родитељске класе.
Пример 1:
Хајде да видимо једноставан пример Јава прилагођеног изузетка. У следећем коду, конструктор ИнвалидАгеЕкцептион узима стринг као аргумент. Овај стринг се прослеђује конструктору родитељске класе Екцептион помоћу методе супер(). Такође, конструктор класе Екцептион се може позвати без коришћења параметра и позивање супер() методе није обавезно.
ТестЦустомЕкцептион1.јава
// 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){>
Излаз:
18){>