예외의 회피
예외의 회피라는 개념이 있습니다.
예외가 발생할 수 있는 상황을 미리 예측하여 예외를 예방하는 것 입니다.
물론 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] 예외의 종류
'자바[Java]' 카테고리의 다른 글
[JAVA] 자바 향상된 예외 처리 - try - with - resources 문 (0) | 2017.12.16 |
---|---|
[JAVA] 자바 향상된 예외 처리 - Multi Catch문 (0) | 2017.12.12 |
[JAVA] 자바 예외 처리 방법 (Exception Handling) (2) | 2017.12.09 |
[JAVA] 자바에서 예외(Exception)란? (0) | 2017.12.07 |
[JAVA] 예외의 종류 (0) | 2017.12.06 |