English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Как напечатать пользовательское сообщение вместо ErrorStackTrace в Java?

Исключения - это проблемы, которые могут возникнуть во время выполнения программы (время выполнения ошибок). При возникновении исключения программа внезапно останавливается, и код, расположенный после строки, которая вызyla исключение, никогда не будет выполнен.

Печать сообщения об исключении

В Java вы можете использовать один из методов, наследованных от класса Throwable, чтобы распечатать сообщение об исключении.

  • printStackTrace() -Этот метод выводит отладочную информацию в стандартный поток ошибок.

  • getMessage() -Этот метод возвращает детельное строковое сообщение текущего объекта, который можно выбросить.

  • toString() -Это сообщение показывает краткое описание текущего объекта, который можно выбросить.

Пример

import java.util.Scanner;
public class PrintingExceptionMessage {
   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("Enter second number:");
      int b = sc.nextInt();
      try {
         int c = a/b;
         System.out.println("The result is: " + c);
      catch(ArithmeticException e) {
         System.out.println("Вывод метода printStackTrace(): ");
         e.printStackTrace();
         System.out.println(" ");
         System.out.println("Вывод метода getMessage(): ");
         System.out.println(e.getMessage());
         System.out.println(" ");
         System.out.println("Вывод метода toString(): ");
         System.out.println(e.toString());
      }
   }
}

Результат вывода

Enter first number:
10
Enter second number:
0
Результат метода printStackTrace():
java.lang.ArithmeticException: / by zero
Результат метода getMessage():
/ by zero
Результат метода toString():
java.lang.ArithmeticException: / by zero
at PrintingExceptionMessage.main(PrintingExceptionMessage.java:11)

Печать пользовательской исключительной ситуации

Повторноеthrow исключительной ситуации-Вы можете повторно抛ить исключительную ситуацию,捕获ленную в блоке catch, используя ключевое слово new. При выполнении этой операции вам нужно передать объект исключительной ситуации и строку, представляющую сообщение, а затем показать переданное сообщение оригинального сообщения.

Пример

import java.util.Scanner;
public class PrintingExceptionMessage {
   public static void main(String args[]) throws Exception {
      String msg = "This is my custom message";
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter first number:");
      int a = sc.nextInt();
      System.out.println("Enter second number:");
      int b = sc.nextInt();
      try {
         int c = a/b;
         System.out.println("The result is: " + c);
      catch(ArithmeticException e) {
         throw new Exception("CoustomMessage: " + msg, e);
      }
   }
}

Результат вывода

Enter first number:
25
Enter second number:
0
Exception in thread "main" java.lang.Exception: CoustomMessage: This is my custom message
at july_set3.PrintingExceptionMessage.main(PrintingExceptionMessage.java:16)
Caused by: java.lang.ArithmeticException: / by zero
at july_set3.PrintingExceptionMessage.main(PrintingExceptionMessage.java:13)

Создание пользовательской исключительной ситуации-Вы можете создать и повторно抛ить пользовательскую исключительную ситуацию с необходимым сообщением.

Пример

import java.util.Scanner;
class MyException extends Exception{
   public MyException(String msg){
      super(msg);
   }
}
public class PrintingExceptionMessage {
   public static void main(String args[]) throws Exception {
      String msg = "This is my custom exception";
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter first number:");
      int a = sc.nextInt();
      System.out.println("Enter second number:");
      int b = sc.nextInt();
      try {
         int c = a/b;
         System.out.println("The result is: " + c);
      catch(ArithmeticException e) {
         MyException exce = new MyException(msg);
         throw exce;
      }
   }
}

Результат вывода

Enter first number:
14
Enter second number:
0
Exception in thread "main" july_set3.MyException: This is my custom exception
   at july_set3.PrintingExceptionMessage.main(PrintingExceptionMessage.java:23)
Вам может понравиться