● 자바(java)에서 말하는 예외란
예외(Exception) 즉, '예외적인 상황'을 줄여서 '예외'라고 한다. 이는 단순한 문법 오류가 아닌
실행 중간에 발생하는 '정상적이지 않은 상황'을 뜻한다.
● 자바(java)에서 말하는 예외처리란
예외 상황에 대한 처리를 의미한다. 그리고 자바는 예외처리 메커니즘을 제공한다.
아래는 예외 상황의 예시이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public static void main(String[] args) {
Scanner a = new Scanner(System.in);
System.out.print("a/b...a? ");
int n1 = a.nextInt(); // int형 정수 입력
System.out.print("a/b...b? ");
int n2 = a.nextInt(); // int형 정수 입력
System.out.printf("%d / %d = %d \n", n1, n2, n1 / n2);
System.out.println("Good bye");
}
|
cs |
자바의 기본 예외처리 메커니즘은 문제 발생 지점에 대한 정보 출력과 프로그램 종료다.
또한 예외에 대한 처리 방법은 프로그래머가 결정할 수 있다.
● 예외 상황을 알리기 위한 클래스
예외 상황을 알리기 위한 클래스는 여러가지가 있는데 이 글에서는 그 중 두가지를 알아보았다.
- java.lang.ArithmeticException : 수학 연산에서의 오류 상황을 의미하는 예외 클래스
- java.util.InputMismatchException : 클래스 Scanner를 통한 값의 입력에서 오류 상황을 의미하는 예외 클래스
이러한 예외의 처리를 위한 클래스들을 try ~ catch 구문을 활용하여 사용해보았다.
예외의 처리를 위한 코드를 별도로 구분하기 위해 디자인된 예외처리 메커니즘이 try ~ catch 이다.
● try ~ catch 의 실행 흐름은 아래와 같다.
try{
...관찰 영역... 관찰 영역은 try로 감싸야 할 영역의 결정이며,
1. ... 입력 오류에 대한 예외의 관점에서 보았을 때 이는 하나로 묶여 보여진다.
2. 예외 발생 지점
3. ...
}
catch(ArithmeticException e) {
...처리 영역...
}
4. 예외 처리 이후 실행 지점
● 직접 try ~ catch 를 이용한 실행 흐름과 예외 처리를 해 보았다.
그 결과 예외 발생 지점인 public static void md2에서 예외를 처리하지 않으면 해당 메소드를 호출한 영역인 class ExceptionMessage로 예외가 전달된다.
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
32
33
34
35
|
package try_catch_practice;
import java.util.InputMismatchException;
import java.util.Scanner;
class ExceptionMessage
{ public static void ko1(int n) {
ko2(n, 0);
}
public static void ko2(int n1, int n2) {
int r = n1 / n2; // 예외 발생 지점에서 예외를 처리하지 않으면 해당 메소드를 호출한 영역으로 예외 전달.
}
}
public class try_catch {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
try {
System.out.println("a/b..a? ");
int n1 = scan.nextInt();
System.out.println("a/b..b? ");
int n2 = scan.nextInt();
System.out.printf("%d / %d = %d \n", n1, n2, n1 / n2); // 예외 발생 지점
} catch (ArithmeticException | InputMismatchException e) {
System.out.println(e.getMessage());
}
System.out.println("EXIT");
ExceptionMessage.md1(3);
}
}
|
cs |
● 아래의 코드 실행 결과를 보면 예외 처리가 된 것을 확인 할 수 있다.
최근댓글