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

Java에서 ErrorStackTrace 대신 사용자 정의 메시지를 출력하는 방법은 무엇인가요?

예외는 프로그램 실행 중 발생하는 문제(런타임 오류)입니다. 예외가 발생하면 프로그램이 갑자기 종료되고, 예외가 발생한 줄 이후의 코드는 결코 실행되지 않습니다.

예외 메시지 출력

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("첫 번째 숫자를 입력하세요:");
      int a = sc.nextInt();
      System.out.println("두 번째 숫자를 입력하세요:");
      int b = sc.nextInt();
      try {
         int c = a/b;
         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());
      }
   }
}

출력 결과

첫 번째 숫자를 입력하세요:
10
두 번째 숫자를 입력하세요:
0
printStackTrace() 메서드의 출력:
java.lang.ArithmeticException: / by zero
getMessage() 메서드의 출력:
/ by zero
toString() 메서드의 출력:
java.lang.ArithmeticException: / by zero
at PrintingExceptionMessage.main(PrintingExceptionMessage.java:11)

사용자 정의 예외 메시지 출력

재제발생 예외-catch 블록에서 잡힌 예외를 new 키워드를 사용하여 재제발생시킬 수 있습니다. 이 작업을 수행할 때, 잡힌 예외 객체와 메시지를 표시하는 String을 함께 전달하고, 전달된 메시지와 원래 메시지를 표시합니다.

예제

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("첫 번째 숫자를 입력하세요:");
      int a = sc.nextInt();
      System.out.println("두 번째 숫자를 입력하세요:");
      int b = sc.nextInt();
      try {
         int c = a/b;
         c);+catch(ArithmeticException e) {
      }
         throw new Exception("CoustomMessage: ")+msg, e);
      }
   }
}

출력 결과

첫 번째 숫자를 입력하세요:
25
두 번째 숫자를 입력하세요:
0
thread "main"에서 예외 발생 java.lang.Exception: CoustomMessage: This is my custom message
at july_set3.PrintingExceptionMessage.main(PrintingExceptionMessage.java:)16)
쓰러진 원인: 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("첫 번째 숫자를 입력하세요:");
      int a = sc.nextInt();
      System.out.println("두 번째 숫자를 입력하세요:");
      int b = sc.nextInt();
      try {
         int c = a/b;
         c);+catch(ArithmeticException e) {
      }
         MyException exce = new MyException(msg);
         throw exce;
      }
   }
}

출력 결과

첫 번째 숫자를 입력하세요:
14
두 번째 숫자를 입력하세요:
0
Exception in thread "main" july_set3.MyException: This is my custom exception
   at july_set3.PrintingExceptionMessage.main(PrintingExceptionMessage.java:)23)
당신이 좋아할 만한 것