반응형
예외가 발생한 이후 catch 구문에서 어떠한 조건을 넣으려고 할 때 되도록 if 구문보다 아예 catch에서 when 키워드를 통해 조건을 거는 것이 좋다.
var retryCount = 0;
var dataString = default(String);
while (dataString == null)
{
try
{
dataString = MakeWebRequest();
}
catch (TimeoutException e) when (retryCount++ < 3)
{
WriteLine("Operation timed out. Trying again");
Task.Delay(1000 * retryCount);
}
}
만약 catch 문에서 조건을 걸었을 경우, try 구문에서 있었던 정보들이 사라지거나 클로저 변수 정보가 사라진다.
다만 예외 필터를 사용하게 되면 그 정보는 그대로 살아 있는 채로 검사가 가능한다.
그러므로 catch 구문에서 어떠한 검증이 필요하다면 되도록 예외 필터를 사용하여 try에서 했던 정보가 살아 있는 상태에서 검증하도록 하는 것이 좋다.
반응형
'C# > Effective C#' 카테고리의 다른 글
[Effective C#] Item 50 예외 필터의 다른 활용 예를 살펴보라 (0) | 2023.06.12 |
---|---|
[Effective C#] Item48 강력한 예외 보증을 준수하는 것이 좋다. (0) | 2023.06.12 |
[Effective C#] Item47 사용자 지정 예외 클래스를 완벽하게 작성하라 (0) | 2023.06.12 |
[Effectvie C#] Item 46 리소스 정리를 위해 using과 try/finally를 활용하라 (0) | 2023.06.12 |
[Effectvie C#] Item 45 메서드가 실패했음을 알리기 위해서 예외를 이용하라 (0) | 2023.05.23 |