📕🐘 도로락 - 코끼리를 냉장고에 넣는 방법
자바[Java] | 2017. 12. 9. 08:00

[JAVA] 예외의 회피

예외의 회피

예외의 회피라는 개념이 있습니다.

예외가 발생할 수 있는 상황을 미리 예측하여 예외를 예방하는 것 입니다.

물론 Checked 예외의 경우 예외처리를 강제하기 때문에 무조건 예외처리를 해 주어야 하지만 실행예외처럼 Unchecked 예외인 경우에는 예외를 회피할 수 있습니다.

예를 들자면 다음 코드의 경우 String s를 대문자로 바꾸어 출력하는 예제입니다.

NullPointerException은 Unchecked 예외이므로 컴파일 과정에서도 체크되지 않습니다.

만약 이 때 if문에서 예외의 회피가 없었다면 s를 대문자로 바꾸는 과정에서는 예외가 발생하게 됩니다.

String s = null;

//예외를 회피하는 if구문
if(s == null){
    s = "empty";
}

System.out.println(s.toUpperCase()); //예외를 회피하지 않았다면 NullPointerException 발생

예외를 처리하지 않고 회피하는 이유

예외를 회피하는 이유는 다음 코드를 보면 알 수 있습니다.

위와 같이 s에 포함된 문자열을 대문자로 바꾸어 출력하는 로직이지만 예외를 회피하지 않고 예외를 Handling 하였습니다.

예외를 회피했을 때에 비해 코드가 복잡해진 것을 알 수 있습니다.

복잡한 프로그램일수록, 발생할 수 있는 예외의 종류가 늘어날수록 예외를 회피하는 것 보다 예외를 직접 처리하는 쪽이 복잡해지게 됩니다.

소스가 복잡할수록 더욱 큰 오류를 만들기 쉽고, 오류가 발생했을 때에도 어느 부분에서 발생했는지 찾기 힘들어 지므로 예외 회피를 통해 간결한 코드를 유지하는 것이 좋습니다.

String s = null;

try{
    System.out.println(s.toUpperCase());
}catch(NullPointerException e){
    s = "empty";
    System.out.println(s.toUpperCase());
}

참고글

도로락

도로락

Writer

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