У цьому розділі ми дізнаємося як надрукувати повідомлення про винятки в Java за допомогою різних методів Java Throwable клас . Клас Throwable надає наступні три методи друку повідомлення про винятки:
- Використання методу printStackTrace
- Використання методу getMessage().
- Використання методу toString().
Давайте обговоримо по черзі детально.
Використання методу printStackTrace().
The printStackTrace() метод визначається в Кидковий клас, який належить пакету java.lang. Метод друкує назва, опис (як от / на нуль ), і трасування стека (номер рядка та ім’я класу, де виникло виключення) винятку. Трасування стека відстежує, де виникає наступний виняток. Він широко використовується для друку повідомлення про винятки.
Існує три версії методу printStackTrace():
абстрактний клас проти інтерфейсу
Синтаксис | опис |
---|---|
printStackTrace() | Метод друкує цей викид і його зворотне трасування до стандартного потоку помилок. |
public void printStackTrace(PrintStream s) | Метод друкує throwable і його зворотне трасування до вказаного потоку друку. |
public void printStackTrace(PrintWriter s) | Метод друкує throwable і його зворотне трасування до вказаного принтера друку. |
Щоб зрозуміти концепцію методу printStackTrace(), спочатку ми створимо a Java програма, яка викликала виняток ділення на нуль. У цій програмі ми не будемо використовувати метод printStackTrace() для друку винятку.
PrintExceptionMessage1.java
public class PrintExceptionMessage1 { //user defined method public static void divide() { try { //raised divide by zero exception int a = 100/0; } catch (Exception e) { //prints exception message System.out.println(e); } } //main() method public static void main(String args[]) { //calling user defined method divide(); } }
Коли ми запускаємо наведену вище програму, ми отримуємо арифметичний виняток і таке повідомлення друкується на консолі:
У наведеному вище повідомленні ми не можемо вказати, який рядок викликає виняток. Отже, важко знайти винятки. Щоб подолати цю проблему, ми використовуємо метод printStackTrace(). Давайте використаємо метод printStackTrace() у програмі на Java.
PrintExceptionMessage2.java
public class ExceptionExample2 { //user defined method public static void divide() { try { //raised divide by zero exception int a = 100/0; } catch (Exception e) { //prints exception message and detail of the exception e.printStackTrace(); } } //main() method public static void main(String args[]) { //calling user defined method divide(); } }
Давайте запустимо наведену вище програму.
У наведеному вище повідомленні про виняток чітко показано, який метод викликав виняток, який тип є виключенням і який рядок викликає виняток.
Перший рядок повідомлення показує, що програма викидає a java.lang.ArithmeticException (поділити на нуль). Другий рядок показує, що винятки виникають у рядку 9 а метод divide() створює виняток. Третій рядок показує цей виняток у рядку двадцять один . Метод main() також створює виняток, оскільки метод divide() викликається всередині методу main(). Отже, використовуючи printStackTrace() метод, ми можемо легко вказати на точне місце розташування виняток.
Використання методу getMessage().
The getMessage() метод також визначено в Кидковий клас, який належить пакету java.lang. Метод друкує лише повідомлення про виняткову ситуацію. Він не друкує ні назву винятку, ні опис. Він широко використовується для друку повідомлення про винятки.
Синтаксис:
public String getMessage();
Він повертає рядок докладного повідомлення цього екземпляра Throwable. Він може бути нульовим.
створення рядкового масиву в java
Давайте використаємо метод getMessage() у програмі Java.
PrintExceptionMesssage3.java
public class PrintExceptionMessage3 { public static void main(String args[]) { try { int a = 100/0; } catch (Exception e) { //prints only the message of the exception System.out.println(e.getMessage()); //use the following statement if you want to print name of the exception and which exception thrown //System.out.println(e); } } }
Давайте запустимо наведену вище програму.
Ми спостерігаємо, що він друкує лише виняток. Тому він не використовується широко, оскільки не друкує детальний опис винятку.
Використання методу toString().
The toString() метод Кидковий клас перекриває toString() метод класу Object. Він друкує короткий опис винятку. Він не показує іншу інформацію (наприклад, назву винятку та трасування стека). Він не широко використовується для друку повідомлення про винятки.
sonu nigam
Давайте використаємо метод toString() у програмі на Java.
PrintExceptionMessage4.java
public class PrintExceptionMessage4 { public static void main(String args[]) { try { int a = 100/0; } catch (Exception e) { //we can use either of the statement to print the exception message //both prints the same message System.out.println(e.toString()); //System.out.println(e); } } }
Давайте запустимо наведену вище програму.
У наведеному вище повідомленні ми спостерігаємо, що воно друкує лише назву та тип винятку. Він не вказує, у якому рядку стався виняток.
Ми бачили різні способи друку повідомлення про винятки в Java. Ми пропонуємо вам скористатися printStackTrace() оскільки він вказує на місце, де виникає виняток.