오류 처리 기법

try{
    resultValue = Long.parseLong(inputValue);
} catch (Exception e){}

주위에서(?) 흔하게(?) 볼 수 있는 코드입니다. 예외를 마구마구 씹어 먹고 있네요 -_-+

오류 처리 기법은 아래와 같이 매우 많습니다.

오류 처리 기법

  1. 중립적인 값 리턴
    1. 잘못된 데이터가 들어올 경우 기본값을 리턴 (숫자 : 0, 문자 : “” 등등)
  2. 다음에 오는 적합한 데이터로 대체
    1. DB에서 100개의 레코드를 불러와야 하는데 67번째 데이터가 깨진 레코드라면 다음 레코드를 67번째로 하면 됨
  3. 이전과 같은 값 리턴
    1. 1초에 100번 온도를 측정하는 프로그램이 있을 때 67번째 측정에서 에러가 났다면 66번째 값을 67번째에도 리턴
  4. 가장 가까운 적합한 데이터로 대체
    1. 물체의 시간 별 이동 거리를 측정하는 프로그램이 있을 때 특정 구간에서 에러가 났다면 이전 구간의 속도나 가속도를 이용하여 근사치를 계산 후 리턴
  5. 경고 메시지를 파일에 기록(메일 발송)
    1. 뭐 이건 많이들 하시는 거라 패스~~
  6. 오류 코드를 리턴
    1. 가장 흔한 예는 Http 통신에서 쓰이죠 404 느낌 아니까…^-^
  7. 오류 처리 메서드나 객체 호출
    1. 차형이 하라고 했던 [무조건 쓰로우]도 궁극적으론 이 방법이죠. 일단 다 쓰로우 하고 한 곳에서 에러처리를 하는 방식.
  8. 오류가 발생한 곳에서 오류 메시지 출력
    1. 이것도 많이 쓰이죠. 패스~~
  9. 지역적으로 가장 잘 작동하는 방법으로 오류를 처리
    1. 말 그대로 코드 만드는 개발자들이 각자 자기가 만드는 곳의 에러를 알아서 처리하는 방법. 유연성은 있으나 관리가 힘듬.
  10. 종료
    1. 깔끔하죠?^^


자, 그럼 어떤 처리 기법을 선택해야 할까요?

당연한 얘기지만... “Case by Case”

*** 예시 ***
  1. 암환자를 진단하는 프로그램 (정확성이 중요)
    1. 이 경우 가장 적합한 에러 처리는 오류 코드 리턴, 종료 등이 있겠네요.
    2. 정확성이 중요할 경우에 근사치를 리턴하거나 중립적인 값을 리턴하면 안 되겠죠? 멀쩡한 사람 암환자로 만들 순 없잖아요?^^;;
  2. 가정용 전자 온도계의 온도 측정 프로그램 (안정성이 중요)
    1. 이 경우 가장 적합한 에러 처리는 다음에 오는 적합한 데이터로 대체, 이전과 같은 값 리턴 등이 있겠네요.
    2. 에러가 났다고 해서 멋대로 꺼지고 하면 안 된다는~ 가정용이기 때문에 아주 정확할 필요는 없고 안정적인 작동이 중요합니다. 1도 정도 차이 난다고 죽는 거 아니잖아요? ㅎㅎ

댓글

이 블로그의 인기 게시물

DBCP2

내부망에서 SBT 사용법

groupadd