C#/Effective C#
[Effective C#] Item47 사용자 지정 예외 클래스를 완벽하게 작성하라
코모's
2023. 6. 12. 17:13
반응형
예외 객체에 포함된 기존 오류 관련 정보를 훼손하지 않으면서도 저수준의 에러 내용을 응용 프로그램 관점으로 재해석한 정보를 예외 객체에 포함 시키고 싶을때 사용자 지정 예외 클래스를 사용할 수 있다.
예외 클래스의 작성 이유
catch 문을 사용하여 예외를 다루는 코드를 작성할 개발자가 각각을 구분해서 서로 다른 작업을 수행할 수 있도록 하기 위함이다.
예외클래스 만들기
1. 개별 예외 클래스의 고유한 책임을 명확하게 규정해야한다.
2. 모든 예외 클래스의 일므은 Exception으로 끝나야 한다.
3. System.Exception 클래스나 혹은 더 적절한 클래스를 상속해서 구현해야 한다.
새로운 예외 클래스를 작성할 때는 반드시 4개의 생성자를 작성해야한다.
// 기본 생성자
public Exception();
// 에러 메시지를 포함하는 생성자
public Exception(string);
// 에러 메시지와 내부 예외를 포함하는 생성자
public Exception(string, Exception);
// 입력 스트림을 이용하는 생성자
protected Exception(SerializationInfo, StreamingContext);
마지막 생성자느 예외 클래스가 serializae 가능해야 함을 의미하는 것이기도 하다.
예외 변환
저수준의 예외에 대해서 보다 세부적인 상태 정보를 포함하는 고수준의 예외로 변경하는 작업
public double DoSomeWork()
{
try
{
//...
return ThirdPartyLibrary.ImportantRoutine();
}
catch(ThirdPartyException e)
{
var msg = $"Problem with {e.ToString()} using library";
throw new DoingSomeWorkException(msg, e);
}
}
반응형