English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
예외는 프로그램 실행 중 발생하는 문제(런타임 오류)입니다. 예외가 발생하면 프로그램이 갑자기 종료되고, 예외가 발생한 줄 이후의 코드는 결코 실행되지 않습니다.
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)