반응형
예외 객체에 포함된 기존 오류 관련 정보를 훼손하지 않으면서도 저수준의 에러 내용을 응용 프로그램 관점으로 재해석한 정보를 예외 객체에 포함 시키고 싶을때 사용자 지정 예외 클래스를 사용할 수 있다.
예외 클래스의 작성 이유
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);
}
}
반응형
'C# > Effective C#' 카테고리의 다른 글
[Effective C#] Item 49 catch 후 예외를 다시 발생시키는 것보다 예외 필터가 낫다. (0) | 2023.06.12 |
---|---|
[Effective C#] Item48 강력한 예외 보증을 준수하는 것이 좋다. (0) | 2023.06.12 |
[Effectvie C#] Item 46 리소스 정리를 위해 using과 try/finally를 활용하라 (0) | 2023.06.12 |
[Effectvie C#] Item 45 메서드가 실패했음을 알리기 위해서 예외를 이용하라 (0) | 2023.05.23 |
[Effective C#] Item 44 바인딩 된 변수는 수정하지 말라 (0) | 2023.05.23 |