Paradox Simulation

728x90
반응형

자바 예외 처리 이유?

프로그래밍 실행 시 다양한 오류가 발생할 수 있다.

대표적으로는

  1. 파일 읽는 프로그램을 실행했지만 파일을 찾지 못하는 경우
  2. 문자열을 숫자로 변환하는 프로그램을 실행했을 때 변환할 수 없는 문자열일 경우
  3. 배열 범위를 넘어설 경우

 

이러한 오류는 컴파일 때 모르고 넘어갈 수 있지만, 실제 운영에서 예외 처리 없이 프로그램을 만들 시 에러코드가 사용자에게 그대로 노출되는 경우가 발생하곤 한다.

 

자바에선 이런 오류에 대응하기 위해서 예외처리라는 기능을 제공한다.

 

예외처리

만약 예외처리가 없는 경우 어떻게 되는지 보겠다.

 

public class testException {
    public static void main(String[] args){
        String[] temp = new String[2];

        System.out.println("temp 사이즈는 : " +temp.length);

        System.out.println("temp의 3번째 값" + temp[2]);
    }
}

 

 

없는 값이라며 ArrayIndexOutOfBoundsException 에러를 발생시킨다.

 

실제 운영되고 있는 프로그램에서 발생한다면 프로그램이 강제로 종료되게 될 것입니다. (또는 에러 페이지를 보여주겠죠)

이런 에러 값을 잡기 위해서 예외처리가 필요하다.

 

Try / Catch

public class testException {
    public static void main(String[] args){
        String[] temp = new String[2];

        System.out.println("temp 사이즈는 : " +temp.length);
        try {
            System.out.println("temp의 3번째 값" + temp[2]);
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

 

언뜻 보기엔 달라진 게 없는 것처럼 보일 수 있다.

 

여기서 설명을 조금 담겠다.

 

try

try 문 안에 코드들이 에러 발생 시 catch 부분으로 넘어가게 된다.

 

catch

try에서 발생한 예외를 처리하게 된다.

 

그럼 catch로 잡아냈다고 해도 에러를 발생시키고 종료시키는 게 끝일까?

그걸 위해서 finally라는 명령어가 존재한다.

 

finally

마지막에 반드시 실행시킴.

 

try / catch / finally

public class testException {
    public static void main(String[] args){
        try {
            String[] temp = new String[2];

            System.out.println("temp 사이즈는 : " +temp.length);
            temp[2] = "테스트";
            System.out.println("temp의 3번째 값 : " + temp[2]);
        } catch (ArrayIndexOutOfBoundsException e){
            System.out.println("에러발생");
        } finally {
            System.out.println("재선언 하겠습니다.");
            String[] temp = new String[3];
            temp[2] = "테스트";
            System.out.println("재선언한 temp의 3번째 값 ?  : " + temp[2]);
        }
    }
}

 

이렇게 예외 처리 함으로써 프로그램을 정상적으로 종료시킨 부분이 있다.

 

예외처리에 대해서는 자주 사용하기도 하고, 많이 사용한다.

다음엔 throws에 대해서 정리하겠다.

 

 

728x90
반응형
250x250
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band