먼저 예외가 모두 오류인 건 아니라는 점을 인식해야 합니다. 예외는 C 같은
언어에서 비 정상적인 상황을 반환값으로 구분하던 관례를 구조적으로 처리할
수 있도록 도입된 언어적 장치입니다. C의 반환값 중에는 애플리케이션 설계
시 미리 정의한 오류코드에 따라 적절히 대응해줘야 하는 것도 있고 단순히
오류인지 여부만 확인(대부분 음의 숫자)만 해서 로직을 중단해 버리는 경우
도 있습니다. 예외도 이와같이 극복(=대응) 가능한 예외와 극복 불가능한 예
외(기껏 할 수 있는 게 로그 정도만 남기고 로직을 중단해야하는 예외)로 구
분됩니다. 그리고 이에 따라 예외 처리 방법도 달라집니다.
극복 가능한 예외는 자바의 checked exception을 사용해도 되고 최근 추세에
따라 runtime exception으로 취급하되 메서드 시그니처에 명세화해서 써도 좋
습니다. 그리고 이런 예외는 메서드를 호출한 쪽에서 반드시 받아 처리해야겠
죠. 극복 가능한 예외는 대부분 로직상 의미를 갖는 예외이고 애플리케이션
설계 과정에서 직접 만드는 경우도 많습니다.
극복 불가능한 예외는 try-cache로 받아봤자 어떻게 할 수 없는 오류가 발생
상황입니다. 이런 예외는 해당 단위 작업의 시발점에서 모든 예외(또는 Error
포함)를 받아 처리하지 않으면 프로그램이 중단되는 상황이 발생하기도 합니
다. 대부분의 웹 애플리케이션에서는 request 단위에서 발생하는 예외를 격리
하고 처리하는 기능을 프레임워크가 가지고 있기 때문에 프레임워크에 위임해
서 처리하는 편이지만 독립형 애플리케이션이나 데몬 형태의 프로그램에서는
직접 처리해줘야 합니다.
로드존슨의 J2EE 설계와 개발에 예외 처리에 대한 좋은 가이드가 들어 있습니다.
http://www.yes24.com/24/goods/428809
이펙티브 자바의 지침도 반드시 읽어둘만 하구요.
예외와 관련해 말할 일이 있으면 늘 소개하는 정상혁님의 블로그 글이 예외
처리와 관련된 지침의 총 정리 같은 글이죠.
http://blog.benelog.net/1901121
12. 4. 16. 오후 9:23, namkyu Lee 쓴 글:
> --
> Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이
> 전송되었습니다.
> 웹에서 이 토론을 보려면
> https://groups.google.com/d/msg/ksug/-/o8LieA3ZlrQJ을 (를) 방문하세요.
> 이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
> 그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내
> 주세요.
> 더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그
> 룹을 방문하세요.
그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내 주세요.
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내주세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
|
예외에 대한 이슈는 2가지 입니다. 누가 예외를 처리할 것인가와 누가 로그를 남길 것인가.
누가 예외를 처리할 것인가는, 각 클래스 혹은 컴퍼넌트의 역활과 직접 관련 있습니다. 따라서 어디서 처리할 것인가는 별로 고민이 되지는 않습니다.
그것보다는 로그를 누가 남길 것인가가 더 문제가 되는 것 같습니다. 중복으로 남기지도 않고, 누락되지도 않으려면. 이에 대하여 가이드를 드리자면 다음과 같은 2곳에서 로그를 남기면 됩니다. 1. 예외를 처리하여 더이상 예외가 아니게 한 곳, 2.외부 와의 인터페이스로 예외를 전파할 때.
다음은 예전에 예외에 대하여 발표했던 자료입니다. 위의 내용을 담고 있습니다. http://aploit.egloos.com/4785911
--------- 원본 메일 ---------
|
|
|
|
|
|
|
|
예외 처리는 지금 말씀하신 수준에서 얘기될 수 있는 것이 아니기 때문에 어 려운 것일 수 있습니다. 사실 별로 어렵지 않은데 낯설어서 어렵게 느껴지고 잘못 취급하게 됩니다.
그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내 주세요.
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내주세요.
예외 처리는 지금 말씀하신 수준에서 얘기될 수 있는 것이 아니기 때문에 어 려운 것일 수 있습니다. 사실 별로 어렵지 않은데 낯설어서 어렵게 느껴지고 잘못 취급하게 됩니다.
그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내 주세요.
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+unsubscribe@googlegroups.com로 이메일을 보내주세요.