- 예외처리 (Exception)

완벽한 프로그래밍은 없다. 아무리 잘 짜여진 코드라도 예외상황은 있기 마련이다.

 

 

Exception처리가 없으면 프세스가 실행 시, 예외상황을 맞딱뜨릴 경우, 프로세스가 멈추게 된다.
예외상황을 맞딱드려도 정상적으로 원활한 프로세스의 진행을 위해 Exception을 사용한다.

위의 catch문 안에 있는 e.getMessage()는 예외상황에 대한 메시지를 보기위한 코드이다.


e.getMessage(); 를 많이 사용하기도 하고, 
메세지를 자세히 보고자 할때는 e.printStackTrace();를 사용한다.


- Exception의 종류

Exception의 종류는 다양하다.

가장 많이 볼 수 있는 흔한 Exception으로는

 

ArrayIndexOutOfBoundsException은 일반적으로 배열에서 존재하지 않는 index값에 접근할 경우 발생하는 Exception이며,
NumberFormatException은 주로 문자열(String)을 숫자(Number)로 바꿔주려고 할 때, 불가능한 경우에 나타나는 Exception이다.

A에서 걸리면 A만 실행, B에서 걸리면 B만 실행, A도 B도 아니면 C가 실행된다.
Exception e에서는 모든것이 실행 되는 것이다.

 


- finally

 

try~ catch 를 이용할 경우 try{}에서 문제가 발생하면 catch문이 실행 된다.
finally 문은 try와 catch문의 영향 없이 무조건 실행 된다.

 

try문에서 문제가 발생하지 않아도 finally는 무조건 실행된다.
문제가 발생해도 catch문을 거쳐 finally문이 무조건 실행 된다.




- 예외처리 문법 throws

try~catch문은 예외가 발생했을 때 자체적으로 catch문을 이용해서 해결한다.
throws의 경우에는 예외를 발생시킨 호출 쪽으로 예외를 던져버리는 방식이다.

 

 

ThrowsExClass 클래스의 객체를 생성하면  결과는 다음과 같다.


actionC
actionB
actoinA
예외는 여기서 처리할께요.^^
4        // e.getMessage();
actionBB
actionCC

 



try~catch가 좋다 throws 가 좋다 이런 문제가 아니라 상황에 맞는 처리를 해주어야 한다.

 


- 자주 발생하는 Exception

예외(Exception)의 종류는 아주 많다.
java API Doc을 보면 수십개가 있는것을 확인할 수 있다.


ArrayIndexOutOfBoundsException = 배열을 사용시 존재하지 않는 index값을 호출하면 발생
NullPointerException = 존재하지 않는 객체를 가리킬 때 발생
NumberFormatException = 문자를 숫자로 처리할 때 발생 (보통 숫자로 변경 할 수 없는 문자열을 변경하려고 할때 발생)  등 

 

- DB관련 Exception
ClassNotFoundException = 드라이브 이름을 찾지 못했을 때
SQLException: db url,id,pw가 올바르지 않을 때

 

 

+ Recent posts