자바 예외 처리

JAVA 2015. 11. 21. 19:40


자바 예외 처리하기



예외 처리가 필요한 이유?

예를 들어 4/0이라는 연산을 컴파일러에서 수행했을 때 ArithmeticException이 발생한다. 

예외 처리를 해주지 않았을 때는 에러가 발생하고 프로그램이 그대로 종료된다. 

우리는 예기치 못하게 예외가 발생하더라도(예를들어, JDBC를 사용한 코드는 정확하더라도, 실제 데이터베이스에 데이터가 없어서 에러를 만들어 낼 수도 있다.) 프로그램이 죽지 않고 이를 처리하게 하기 위해서 예외 처리가 필요한 것이다.

<예외처리가 필요한 이유>

// int c = 4 / 0;        => 예외처리 하지 않아 프로그램 죽음 
int c = 4;
try {
   c = c / 0;
catch (Exception e) {
   System.out.println(e);    // => 예외처리  catch문이 실행되고 프로그램은 죽지 않는다.
}
cs

예외를 고의로 발생시키는 방법?
예외를 고의로 발생시키는 것이 왜 필요한 것일까? 필요할 때가 있다. 
다소 억지스러운 상황이지만 다음과 같은 경우의 로직이 만들어 질 수 있다.

    public static class compareException extends RuntimeException{
    }
    public static void compareTest(String s1, String s2){
        try {
            if(!s1.equals(s2)){
                throw new compareException();
            }
            System.out.println(s1 + " - " + s2 + "는 같습니다.");
        } catch (Exception e) {
            System.out.println(s1 + " - " + s2 + "는 같지 않습니다.");
        }
    }
    
    public static void main(String[] args) {
        String a = "hello";
        String b = "hell";
        compareTest(a, b);
    }
cs
위의 예는 조금 더 쉬운 예로 교체해야 될 것 같다.

try - catch문에서 정상적으로 실행되기 위해 필요한 로직이 try블록 안에 위치할 것이다.

하지만, 예외가 발생한다면? try문 안의 다음 문장은 수행되지 않아야하며, catch문으로 넘어가줘야 합니다.

이럴 때를 위하여 Throw를 통해 고의적으로 예외를 발생시키는 것이 필요합니다. 





'JAVA' 카테고리의 다른 글

mutable vs immutable  (0) 2015.11.27
자바 스레드 프로그래밍  (0) 2015.11.23
GC(Garbage Collection)의 대상은 누구인가?  (0) 2015.11.10
LinkedHashMap, TreeMap, HashMap  (0) 2015.11.07
Comparable 인터페이스에 대한 이해  (0) 2015.11.07
Posted by slender ankles
,