when(C# 참조)

when 상황별 키워드를 사용하여 다음 컨텍스트에서 필터 조건을 지정합니다.

catch 절의 when

when 키워드는 특정 예외를 실행하기 위해 처리기에 대해 true여야 하는 조건을 지정하기 위해 catch 절에서 사용할 수 있습니다. 사용되는 구문은 다음과 같습니다.

catch (ExceptionType [e]) when (expr)

여기서 expr은 부울 값으로 계산되는 식입니다. true가 반환되면 예외 처리기가 실행되고, false가 반환되면 실행되지 않습니다.

다음 예제는 when 키워드를 사용하여 예외 메시지의 텍스트에 따라 HttpRequestException에 대한 처리기를 조건부로 실행합니다.

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        Console.WriteLine(MakeRequest().Result);
    }

    public static async Task<string> MakeRequest()
    {
        var client = new HttpClient();
        var streamTask = client.GetStringAsync("https://localHost:10000");
        try
        {
            var responseText = await streamTask;
            return responseText;
        }
        catch (HttpRequestException e) when (e.Message.Contains("301"))
        {
            return "Site Moved";
        }
        catch (HttpRequestException e) when (e.Message.Contains("404"))
        {
            return "Page Not Found";
        }
        catch (HttpRequestException e)
        {
            return e.Message;
        }
    }
}

참고 항목