when(C# 참조)

when(C# 참조)

when 문맥 키워드(contextual keyword)는 필터 조건을 지정할 때 써요. 다른 키워드들이 고정된 자리에서만 쓰이는 것과 달리, when은 다음 세 가지 문맥에서 조건을 붙이는 용도로 등장합니다.

[!INCLUDEcsharp-version-note]

catch 절에서의 when

catch 절에서 when을 쓰면, 특정 예외에 대한 처리기가 실행되기 위해 참이어야 하는 조건을 지정할 수 있어요. 문법은 이렇게 생겼습니다.

catch (ExceptionType [e]) when (expr)

여기서 expr은 Boolean 값으로 평가되는 식이에요. true를 돌려주면 해당 예외 처리기가 실행되고, false면 실행되지 않습니다.

when 키워드를 쓰는 예외 필터(Exception filter)는 전통적인 예외 처리 방식에 비해 몇 가지 장점이 있어요. 특히 디버깅 지원이 좋아지고 성능 면에서도 이점이 있습니다. 예외 필터가 어떻게 호출 스택(call stack)을 보존하고 디버깅을 개선하는지 자세히 알고 싶다면 예외 필터 vs. 전통적인 예외 처리 문서를 참고해요.

아래 예제는 when 키워드를 써서, 예외 메시지의 내용에 따라 xref:System.Net.Http.HttpRequestException에 대한 처리기를 조건적으로 실행하는 모습을 보여줍니다.

:::code language="csharp" source="./snippets/catch.cs":::

더 알아보기

출처: when(C# reference)