'Exception Handling'에 해당되는 글 1건

  1. 2008.09.16 Exception Handling Best Practices in .NET
원문을 읽어 보면 수긍이 가는 내용도 있고 아닌 내용도 있다. 한번쯤 읽어 보고 참고하면 좋겠다.

원문 요약

절대로 실패하지 않는 Software는 불가능에 가깝다
  • 초기에 Check하라.
  • 외부 Data를 신뢰하지 마라.
  • 유일하게 믿을 수 있는 Device는 Video, mouse, keyboard 뿐이다.(다른 외부 데이터 소스는 신뢰할 수 없다는 의미)
  • Write(디스크 등에 쓰기 작업을 의미) 도 실패할 수 있다.
  • 안전한 코드 작성
  • throw new Exception() 금지. 대신에 ApplicationException 에서 상속하여 직접 만든 exception class를 사용할 것.
  • Message Field에 중요한 예외 정보를 넣지 말것.
  • Thread 당 단일 catch 블럭을 두라.
  • 일반 예외가 발생하면 기록되어야 한다.(여기 저기 catch 블록이 득실거려서 예외 상황이 중복하여 기록되지 않도록 하라는 의미)
  • Exception.ToString()을 사용하여 기록하고 Exception.Message만 기록하는 것 금지.
  • thread 에서 예외를 한 번 이상 catch 하지 말라.
  • 예외를 꿀꺽 삼키지 말라.(아무 것도 하지 않는 그런 catch block은 안좋다)
  • 자원 정리 코드는 반드시 finally block에서 작성.
  • 모든 곳에 using 키워드를 써라.(Dispose() 패턴을 구현하는 객체을 사용할 때는 using block을 쓰라는 의미)
  • 에러 상황에서 특별한 값을 return하지 말라.(예외 상황에 값을 반환하는 것은 비효율적이고 아무 도움이 되지 않기 때문 등등..)
  • method로 부터의 반환 정보의 의미로 예외 처리를 사용하지 마라.
  • 에어 처리를 위한 예외는 무시되어서는 안된다.
  • exception을 re-throwing 할 때에는 statkc trace 정보를 함께 전달해야 한다.
  • 의미없이 예외를 수정하지 마라.
  • 예외는 직렬화 가능 해야 한다.(user defined exception을 사용할 경우..)
  • 예외 발생 가능성이 있는 코드에는 Assert 대신 throw an Exception사용.(Assert는 Unit Test를 위해서 남겨 둘 것)
  • 각 Exception class에는 최소한 원래 세개의 생성자를 가지도록 할 것.(참고 http://msdn.microsoft.com/en-us/library/aa328363.aspx)
  • AppDomain.Unhandled Exception Event를 사용 할 때는 주의하라.
  • 시간과 노력을 낭비하지 말 것.(Exception Management Application Block, Microsoft Enterprise Instrumentation Framework 등의 좋은 Framework 들이 있다)

원문 링크 : http://www.codeproject.com/KB/architecture/exceptionbestpractices.aspx



Posted by spponge

댓글을 달아 주세요