방프리
21.09.27 Chapter5. 예외처리 (Item 49) 본문
Item 49 : catch 후 예외를 다시 발생시키는 것보다 예외 필터가 낫다.
예외가 발생한 이후 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#' 카테고리의 다른 글
21.10.01 Chapter5. 예외처리 (Item 50) (0) | 2021.10.01 |
---|---|
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