은근한

자바(java) try-catch 본문

카테고리 없음

자바(java) try-catch

EsJoo 2014. 5. 14. 23:56

자바에서 try-catch 문은 예외처리에 해당한다.


예외처리란 프로그램 실행 중 예외나 에러가 발생할 경우 처리를 해주는 것이다.


try에서는 뜻 그대로 시도하다, 도전하다 이런 의미이다. 내가 작성한 코드에서 예외나 에러가 뜨면


try에서 벗어나게 된다. 벗어나게되면 catch가 기다리고 있는데 catch는 잡다 라는 의미를 가지고 있다.


catch에서 예외나 에러를 잡아 처리를 하는 것으로 이해하면 편하다.


try{

작성할 코드 에러가 뜰지 안뜰지는 모르지만

에러가 발생시 catch..로

}


catch(IOException e){

try영역에서 오류가 떠서 catch에서 처리를 해줘야한다.

}


가장 흔한 예로 


숫자를 0으로 나눠 보는 것이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.Scanner;
public class ExceptionExample {
    public static void main (String[] args) {
        Scanner rd = new Scanner(System.in);
        int divisor = 0;
        int dividend = 0;
        System.out.print("나뉨수를 입력하시오:");
        dividend = rd.nextInt();
        System.out.print("나눗수를 입력하시오:");
        divisor = rd.nextInt();  
        System.out.println(dividend+"를 "+divisor+"로 나누면 몫은 "
                                                   + dividend/divisor+"입니다.");
    }
}

현재 try-catch를 쓰지 않고 숫자를 입력받아 나누어 봄


그럼 자바에서는 0으로 나눌수 없다고 한다. 여기서 주의할 것은 java.lang.ArithmeticException이다.


예외가 ArithmeticException에 의해 발생되었다고한다.


 그럼 다음코드는 try-catch를 써서 해봄


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
public class ExceptionExample {
    public static void main (String[] args) {
        Scanner rd = new Scanner(System.in);
        int divisor = 0;
        int dividend = 0;
        System.out.print("나뉨수를 입력하시오:");
        dividend = rd.nextInt();
        System.out.print("나눗수를 입력하시오:");
        divisor = rd.nextInt();
        try {
            System.out.println(dividend+"를 "+divisor+"로 나누면 몫은 "
                                                   + dividend/divisor+"입니다.");
        } catch (ArithmeticException e) {
            System.out.println("0으로 나눌 수 없습니다.");
        }
    }
}


코드에 보면 catch의 인자를 ArithmeticException으로 해서 처리 한것을 볼 수있다.

0으로 나누게 되면 예외가 발생하여 catch영역에 있는 곳을 실행하게 된다.


예외처리에 해당하는 메소드 및 인자는 api를 찾아보면 있다.


대표적인 것들로





예외를 잘 찾아보거나 한번 에러코드를 실행시키면 이클립스에서 알려준다.