English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Исключением являются проблемы, возникающие в процессе выполнения программы (время выполнения ошибки). При возникновении исключения программа внезапно завершается, и код после строки, вызывавшей исключение, никогда не будет выполнен.
import java.util.Scanner; public class ExceptionExample { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Enter first number: "); int a = sc.nextInt(); System.out.println("Введите второе число:"); int b = sc.nextInt(); int c = a / b; System.out.println("Результат: " + c); } }
Результат выполнения
Введите первое число: 100 Введите второе число: 0 Exception in thread "main" java.lang.ArithmeticException: / by zero at ExceptionExample.main(ExceptionExample.java:10)
Вы можете использоватьthrow Ключевое слово явно вызывает пользовательские или предопределенные исключения.
Экземплярные и предопределенные исключения имеют два типа, каждый из которых представлен классом и наследуется от класса Throwable.
Чтобы явно выбросить исключение, вам нужно создать его класс и использовать ключевой слово throw для выброса его объекта.
Ниже приведен пример Java-программы, вызывающей NullPointerException
public class ExceptionExample { public static void main(String[] args) { System.out.println("Привет"); NullPointerException nullPointer = new NullPointerException(); throw nullPointer; } }
Результат выполнения
Привет Exception in thread "main" java.lang.NullPointerException at MyPackage.ExceptionExample.main(ExceptionExample.java:6)
Каждый раз, когда явно выбрасывается исключение, необходимо убедиться, что строка с ключом throw является последней в программе. Это связано с тем, что любая кодовая строка, написанная после этой строки, становится не доступной для выполнения, и если у вас есть код после этой строки, будет сгенерирована ошибка компиляции.
public class ExceptionExample { public static void main(String[] args) { System.out.println("Привет"); NullPointerException nullPointer = new NullPointerException(); throw nullPointer; System.out.println("Как вы"); } }
D:\>javac ExceptionExample.java ExceptionExample.java:6: ошибка: недоступное выражение System.out.println("Как вы"); ^ 1 error
Обычно ключевое слово throw используется для вызова пользовательских исключений. Каждый раз, когда мы определяем свои собственные исключения, нам нужно определить класс, который extends класс Throwable, и перегрузить необходимые методы.
Инстанцируем этот класс и используем ключевой слово throw для его выброса в любом месте, где необходимо исключение.
В следующем примере Java программы мы создадим пользовательский класс исключения AgeDoesnotMatchException.
public class AgeDoesnotMatchException extends Exception { AgeDoesnotMatchException(String msg) { super(msg); } }
Другой класс Student содержит две私有ные переменные name и параметризованный конструктор, который инициализирует экземпляр.
В качестве основного метода мы принимаем имя пользователя и значение возраста, и инициализируем класс Student переданными значениями.
В конструкторе класса Student мы создали исключениеAgeDoesnotMatchExceptionобъект, и вызвал исключение (используя throws) при условии, что значение возраста находится в диапазоне от 17 до 24.
public class Student extends RuntimeException { private String name; private int age; public Student(String name, int age) { try { if (age < 17 || age > 24) { String msg = "Возраст не介于 17 и 24"; AgeDoesnotMatchException ex = new AgeDoesnotMatchException(msg); throw ex; } } e.printStackTrace(); } this.name = name; this.age = age; } public void display() { System.out.println("Имя студента: " + this.name); System.out.println("Возраст студента: " + this.age); } public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Введите имя студента: "); String name = sc.next(); System.out.println("Введите возраст студента, который должен быть между 17 и 24 (включая 17 и 24): "); int age = sc.nextInt(); Student obj = new Student(name, age); obj.display(); } }
Результат выполнения
Во время выполнения этой программы вам нужно передать значения имени и возраста с клавиатуры. Если заданный возраст не находится между 17 и 24, происходит исключение, как показано ниже:
Введите имя студента: Krishna Введите возраст студента, который должен быть между 17 и 24 (включая 17 и 24): 14 AgeDoesnotMatchException: Возраст не介于 17 и 24 Имя студента: Krishna' Возраст студента: 14 at Student.<init>(Student.java:18) at Student.main(Student.java:39)