방프리
21.09.25 Chapter5. 예외처리 (Item 47) 본문
Item 47 : 사용자 지정 예외 클래스를 완벽하게 작성하라
예외처리는 프로그래머라면 반드시 해주어야 하는 필수항목이다.
예외를 처리할 때 Exception 클래스를 통해 통합적인 예외처리를 하는 방법과 NullReferenceException 같은
특수 Exception 클래스를 인자로 예외처리 하는 두 가지 방식으로 나뉜다.
이 항목에서 저자는 전자가 아닌 후자로 처리하되 자신이 만든 클래스 타입에서 예외 처리를 해야한다면
반드시 그 클래스에 맞는 예외 클래스도 만들어주어야 한다고 강조한다.
//모든 예외를 처리할 수 있지만 정확한 원인 파악이 어려움
try
{
DoWork();
}
catch (Exception e)
{
CatchException();
}
finally
{
LastWork();
}
//위의 코드보다 좀 더 상세한 원인 파악이 가능
try
{
DoWork();
}
catch (MyFirstApplicationException e)
{
CatchMyFristApplicationException();
}
catch (AnotherApplicationException e)
{
CatchAnotherApplicationException();
}
finally
{
LastWork();
}
이 때 예외 클래스에서 반드시 구현해주어야 하는 함수는 다음과 같다.
//기본 생성자
public Exception();
//에러 메시지를 포함하는 생성자
public Exception(string);
//에러 메시지와 내부 예외를 포함하는 생성자
public Exception(string, Exception);
//입력 스트림을 이용하는 생성자
protected Exception(Serialization info, StreamingContext);
더 많은 정보를 원한다면 ToString() 메서드를 적극 활용하는 것이 좋다.
public double DoWork()
{
try
{
return ThirdPartyLibrary.ImportantRoutine();
}
catch (ThirdPartyException e)
{
var msg = $"Problem with {e.ToString()} using library";
throw new DoingSomeWorkException(msg, e);
}
}
'C# > Effective C#' 카테고리의 다른 글
21.09.27 Chapter5. 예외처리 (Item 49) (0) | 2021.09.27 |
---|---|
21.09.27 Chapter5. 예외처리 (Item 48) (0) | 2021.09.27 |
21.09.24 Chapter5. 예외처리 (Item 46) (0) | 2021.09.24 |
21.09.19 Chapter5. 예외처리 (Item 45) (0) | 2021.09.19 |
21.09.19 Chapter4. LINQ 활용 (Item 44) (0) | 2021.09.19 |
Comments