Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- Number Theory
- database
- greedy
- dynamic programming
- Math
- Stack
- 구현
- bit manipulation
- Tree
- SQL
- Matrix
- 코테
- simulation
- string
- two pointers
- implement
- array
- Binary Search
- Binary Tree
- 자바
- java
- hash table
- 코딩테스트
- geometry
- Data Structure
- Method
- 파이썬
- Counting
- Class
- sorting
Archives
- Today
- Total
코린이의 소소한 공부노트
예외 메시지 출력 본문
try 블록을 실행하다가 예외가 발생하게 되면 해당 예외 타입의 객체가 발생하게 된다. 이때 이 객체에는 여러 가지 정보가 들어있는데, 그중 이번에 볼 것은 메서드 2가지이다.
1. printStackTrace()
- 예외 발생 당시의 호출 스택(call stack)에 있었던 메서드 정보와 예외 메시지를 화면에 출력한다.
2. getMessage()
- 발생한 예외 클래스의 인스턴스에 저장된 메시지를 얻는다.
0으로 나누는 산술 예외를 발생시켜서 어떤 메시지를 얻을 수 있는지 살펴보자.
class Test{
public static void main(String args[]) {
System.out.println(1);
try {
System.out.println(2);
System.out.println(3/0); // 예외 발생
System.out.println(4); // 실행X
} catch(ArithmeticException ae){
ae.printStackTrace();
System.out.println("예외메시지 : " + ae.getMessage());
} catch(Exception e) {
System.out.println(5); // 실행X
}
System.out.println(6);
}
}
1) try 블록을 실행하다가 0으로 나누려는 코드 발견!
- ArithmeticException타입의 예외 객체 생성
2) try 블록을 빠져나가 첫 번째 catch 블록을 확인한다.
- 객체의 타입과 참조변수 ae의 타입이 일치하기 때문에 ae에 객체의 주소가 담긴다.
- 이때 ae의 유효 범위는 해당 catch 블록 내부
3) 해당 catch 블록을 실행하면 아래와 같은 결과가 나온다.
// 결과화면
1
2
java.lang.ArithmeticException: / by zero
at Test.main(Test.java:6)
예외메시지 : / by zero
6
a. 맨 위부터 실행
b. 6번째 줄에서 산술 예외 발생
- 예외가 발생한 곳에서 try 블록을 빠져나오기 때문에 4는 출력되지 않는다.
c. 첫 번째 catch 블록 수행
- printStackTrace() 실행 -> 에러 메시지 2줄 출력
- getMessage() 실행 -> 어떤 예외였는지 메시지로 알려줌
d. try-catch문을 완전히 빠져나온 후 6 출력
'Java' 카테고리의 다른 글
예외 발생시키기 (0) | 2022.05.25 |
---|---|
멀티 catch 블록 (0) | 2022.05.24 |
프로그램 오류의 종류와 예외 처리 (0) | 2022.05.19 |
익명 클래스 (0) | 2022.05.19 |
내부 클래스 (0) | 2022.05.19 |