when (C# 參考)

您可以使用 when 內容關鍵字,在下列內容中指定篩選條件:

catch 子句中的 when

when 關鍵字可以用於 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;
        }
    }
}

另請參閱