В Java можем да създадем наши собствени изключения, които са производни класове на класа Exception. Създаването на собствено изключение е известно като персонализирано изключение или дефинирано от потребителя изключение. По принцип персонализираните изключения на Java се използват за персонализиране на изключението според нуждите на потребителя.
Разгледайте пример 1, в който класът InvalidAgeException разширява класа Exception.
Използвайки персонализираното изключение, можем да имаме ваше собствено изключение и съобщение. Тук сме предали низ към конструктора на суперклас, т.е. клас Exception, който може да бъде получен чрез метода getMessage() на обекта, който сме създали.
В този раздел ще научим как персонализираните изключения се внедряват и използват в програмите на Java.
Защо да използвате персонализирани изключения?
Изключенията на Java покриват почти всички общи типове изключения, които могат да възникнат при програмирането. Понякога обаче трябва да създадем персонализирани изключения.
Следват няколко от причините да използвате персонализирани изключения:
- За улавяне и предоставяне на специфично третиране на подмножество от съществуващи Java изключения.
- Изключения от бизнес логиката: Това са изключенията, свързани с бизнес логиката и работния процес. Полезно е за потребителите на приложението или разработчиците да разберат точния проблем.
За да създадем персонализирано изключение, трябва да разширим класа Exception, който принадлежи към пакета java.lang.
преобразуване на низ в цяло число
Разгледайте следния пример, където създаваме персонализирано изключение, наречено WrongFileNameException:
public class WrongFileNameException extends Exception { public WrongFileNameException(String errorMessage) { super(errorMessage); } }
Забележка: Трябва да напишем конструктора, който приема String като съобщение за грешка и се нарича конструктор на родителски клас.
Пример 1:
Нека видим прост пример за персонализирано изключение на Java. В следния код конструкторът на InvalidAgeException приема низ като аргумент. Този низ се предава на конструктора на родителския клас Exception с помощта на метода super(). Също така конструкторът на клас Exception може да бъде извикан без използване на параметър и извикването на метод super() не е задължително.
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){>
Изход:
18){>