오류 처리 기법
try{
resultValue = Long.parseLong(inputValue);
} catch (Exception e){}
주위에서(?) 흔하게(?) 볼 수 있는 코드입니다. 예외를 마구마구 씹어 먹고 있네요 -_-+
오류 처리 기법은 아래와 같이 매우 많습니다.
오류 처리 기법
- 중립적인 값 리턴
- 잘못된 데이터가 들어올 경우 기본값을 리턴 (숫자 : 0, 문자 : “” 등등)
- 잘못된 데이터가 들어올 경우 기본값을 리턴 (숫자 : 0, 문자 : “” 등등)
- 다음에 오는 적합한 데이터로 대체
- DB에서 100개의 레코드를 불러와야 하는데 67번째 데이터가 깨진 레코드라면 다음 레코드를 67번째로 하면 됨
- DB에서 100개의 레코드를 불러와야 하는데 67번째 데이터가 깨진 레코드라면 다음 레코드를 67번째로 하면 됨
- 이전과 같은 값 리턴
- 1초에 100번 온도를 측정하는 프로그램이 있을 때 67번째 측정에서 에러가 났다면 66번째 값을 67번째에도 리턴
- 1초에 100번 온도를 측정하는 프로그램이 있을 때 67번째 측정에서 에러가 났다면 66번째 값을 67번째에도 리턴
- 가장 가까운 적합한 데이터로 대체
- 물체의 시간 별 이동 거리를 측정하는 프로그램이 있을 때 특정 구간에서 에러가 났다면 이전 구간의 속도나 가속도를 이용하여 근사치를 계산 후 리턴
- 물체의 시간 별 이동 거리를 측정하는 프로그램이 있을 때 특정 구간에서 에러가 났다면 이전 구간의 속도나 가속도를 이용하여 근사치를 계산 후 리턴
- 경고 메시지를 파일에 기록(메일 발송)
- 뭐 이건 많이들 하시는 거라 패스~~
- 뭐 이건 많이들 하시는 거라 패스~~
- 오류 코드를 리턴
- 가장 흔한 예는 Http 통신에서 쓰이죠 404 느낌 아니까…^-^
- 가장 흔한 예는 Http 통신에서 쓰이죠 404 느낌 아니까…^-^
- 오류 처리 메서드나 객체 호출
- 차형이 하라고 했던 [무조건 쓰로우]도 궁극적으론 이 방법이죠. 일단 다 쓰로우 하고 한 곳에서 에러처리를 하는 방식.
- 차형이 하라고 했던 [무조건 쓰로우]도 궁극적으론 이 방법이죠. 일단 다 쓰로우 하고 한 곳에서 에러처리를 하는 방식.
- 오류가 발생한 곳에서 오류 메시지 출력
- 이것도 많이 쓰이죠. 패스~~
- 이것도 많이 쓰이죠. 패스~~
- 지역적으로 가장 잘 작동하는 방법으로 오류를 처리
- 말 그대로 코드 만드는 개발자들이 각자 자기가 만드는 곳의 에러를 알아서 처리하는 방법. 유연성은 있으나 관리가 힘듬.
- 말 그대로 코드 만드는 개발자들이 각자 자기가 만드는 곳의 에러를 알아서 처리하는 방법. 유연성은 있으나 관리가 힘듬.
- 종료
- 깔끔하죠?^^
자, 그럼 어떤 처리 기법을 선택해야 할까요?
당연한 얘기지만... “Case by Case”
*** 예시 ***
- 암환자를 진단하는 프로그램 (정확성이 중요)
- 이 경우 가장 적합한 에러 처리는 오류 코드 리턴, 종료 등이 있겠네요.
- 정확성이 중요할 경우에 근사치를 리턴하거나 중립적인 값을 리턴하면 안 되겠죠? 멀쩡한 사람 암환자로 만들 순 없잖아요?^^;;
- 가정용 전자 온도계의 온도 측정 프로그램 (안정성이 중요)
- 이 경우 가장 적합한 에러 처리는 다음에 오는 적합한 데이터로 대체, 이전과 같은 값 리턴 등이 있겠네요.
- 에러가 났다고 해서 멋대로 꺼지고 하면 안 된다는~ 가정용이기 때문에 아주 정확할 필요는 없고 안정적인 작동이 중요합니다. 1도 정도 차이 난다고 죽는 거 아니잖아요? ㅎㅎ
댓글
댓글 쓰기