예외의 회피
예외의 회피라는 개념이 있습니다.
예외가 발생할 수 있는 상황을 미리 예측하여 예외를 예방하는 것 입니다.
물론 Checked 예외의 경우 예외처리를 강제하기 때문에 무조건 예외처리를 해 주어야 하지만 실행예외처럼 Unchecked 예외인 경우에는 예외를 회피할 수 있습니다.

예를 들자면 다음 코드의 경우 String s를 대문자로 바꾸어 출력하는 예제입니다.
NullPointerException은 Unchecked 예외이므로 컴파일 과정에서도 체크되지 않습니다.
만약 이 때 if문에서 예외의 회피가 없었다면 s를 대문자로 바꾸는 과정에서는 예외가 발생하게 됩니다.
1
2
3
4
5
6
7
8
String s = null;
 
//예외를 회피하는 if구문
if(s == null){
    s = "empty";
}
 
System.out.println(s.toUpperCase()); //예외를 회피하지 않았다면 NullPointerException 발생
cs

 

 

 

예외를 처리하지 않고 회피하는 이유
예외를 회피하는 이유는 다음 코드를 보면 알 수 있습니다.
위와 같이 s에 포함된 문자열을 대문자로 바꾸어 출력하는 로직이지만 예외를 회피하지 않고 예외를 Handling 하였습니다.
예외를 회피했을 때에 비해 코드가 복잡해진 것을 알 수 있습니다.
복잡한 프로그램일수록, 발생할 수 있는 예외의 종류가 늘어날수록 예외를 회피하는 것 보다 예외를 직접 처리하는 쪽이 복잡해지게 됩니다.
소스가 복잡할수록 더욱 큰 오류를 만들기 쉽고, 오류가 발생했을 때에도 어느 부분에서 발생했는지 찾기 힘들어 지므로 예외 회피를 통해 간결한 코드를 유지하는 것이 좋습니다. 

 

1
2
3
4
5
6
7
8
String s = null;
 
try{
    System.out.println(s.toUpperCase());
}catch(NullPointerException e){
    s = "empty";
    System.out.println(s.toUpperCase());
}
cs

 

 

 

참고글

[JAVA] 자바 예외 처리 방법 (Exception Handling)
[JAVA] 자바에서 예외(Exception)란?
[JAVA] 예외의 종류

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,