아무거나

예외처리 본문

Java/Java

예외처리

전봉근 2019. 8. 16. 23:35
반응형

[예외처리]

몇 달 동안 실험을 기울여 만들어 놓은 프로젝트가 단순한 어떤 이유로 작동을 하지 않는다면 문제가 됩니다. 그러므로 예외의 필요서이

필요한데 그것은 어느 한 부분에서 예외가 발생하더라도 계속해서 프로그램이 동작되도록 하는데 목적이 있습니다.

 

1. try ~ catch

try {
// 문제가 발생할 수 있는 로직을 기술
} catch (Exception e) {
// Try{}안에서 문제가 발생했을 때 대처방안을 기술
}

* catch문에 예외처리를 여러 개 할 수 도 있다.
try {
} catch (ArrayIndexOutOfBoundsException a) {
} catch (NumberFormatException n) {
} catch (Exception e) {
}

 

* 또한 try ~ catch는 문제가 발생하여도 catch로 처리하고, 나머지 작업도 진행할 수 있다.

 

[try ~ catch ~ finally]

finally문은 try와 catch문의 영향 없이 무조건 실행된다.

 

ex) try {
} catch () {
} finally {
// catch문에 오지 않아도 와도 finally는 무조건 실행
}

 

2. throws

throws는 예외를 발생시킨(호출)쪽으로 예외를 던져버리는 방식이다.

 

[MainClass.java]

public class MainClass {
    public static void main(String[] args) {
        ThrowsExClass throwsExClass = new ThrowsExClass();
    }
}

 

[ThrowsExClass.java]

public class ThrowsExClass {
    public ThrowsExClass() {
    	actionC();
    }


    private void actionA() throws Exception {
        System.out.println("action A");

        int[] iArr = {1, 2, 3, 4};
        System.out.println(iArr[4]);

        System.out.println("actionAA");
    }


    private void actionB() {
        System.out.println("action B");

        try {
        	actionA();
        } catch (Exception e) {
         	System.out.println("예외는 여기서 처리");
          	System.out.println(e.getMessage());
        }

        System.out.println("actionBB");
    }


    private void actionC() {
        System.out.println("action C");
        actionB();
        System.out.println("action CC");
    }
}

 

* 결과

action C
action B
action A
예외는 여기서 처리
4
actionBB
action CC

 

3. 일반적으로 많이 보게 되는 예외들

- ArrayIndexOutOfBoundsException : 배열을 사용시 존재하지 않는 index값을 호출하면 발생 합니다.

- NullPointerException : 존재하지 않는 객체를 가리킬 때 발생 합니다.

ex) 객체가 null되는 상황에 발생

- NumberFormatException : 문자를 숫자로처리할때 발생

 

[DB관련 Exception]

- ClassNotFoundException : 드라이브 이름을 찾지 못했을 때

- SQLException : db url, id, pw가 올바르지 않을 때

반응형

'Java > Java' 카테고리의 다른 글

입출력(I/O)  (0) 2019.08.16
JAVA Collections  (0) 2019.08.16
StringTokenizer 클래스  (0) 2019.08.16
Timer 클래스  (0) 2019.08.16
Wrapper 클래스  (0) 2019.08.12
Comments