방프리
21.10.01 Chapter5. 예외처리 (Item 50) 본문
Item 50 : 예외 필터의 다른 활용 예를 살펴보라
예외필터를 통해 다양한 방법으로 여러 가지 기능을 제공할 수 있다.
첫 번째로 항상 false만을 반환하여 제한된 타입에 대해서만 로그를 출력할 수 있다.
try
{
data = MakeWebRequest();
}
catch (Exception e) when (ConsoleLogException(e))
{
}
catch (TimeoutException e) when (failures++ < 10)
{
WriteLine("Timeout error: trying again");
}
public static bool ConsoleLogException(Exception e)
{
var oldColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Red;
WriteLine("Error: {0}", e);
Console.ForegroundColor = oldColor;
return false;
}
또 다른 예로 디버깅을 수행할 때는 catch문 내의 예외 처리 루틴을 수행하지 않도록 할 수 있다.
try
{
data = MakeWebRequest();
}
catch (Exception e) when (ConsoleLogException(e))
{
}
catch (TimeoutException e) when ((failures++ < 10) &&
(!System.Diagnostics.Debugger.IsAttached))
{
WriteLine("Timeout error: trying again");
}
예외 처리 필터의 동작 방식에 대해 잘 이해한다면 여러 가지 방식으로 운용이 가능하다.
'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.25 Chapter5. 예외처리 (Item 47) (0) | 2021.09.25 |
21.09.24 Chapter5. 예외처리 (Item 46) (0) | 2021.09.24 |
21.09.19 Chapter5. 예외처리 (Item 45) (0) | 2021.09.19 |
Comments