When in C#

کلمه کلیدی when اولین بار در C#6 و برای کار با Exceptionها اضافه شد

قبل از معرفی when، برای مدیریت خطاها از یک بلاک catch برای انواع exceptionها استفاده می کردیم اما با اضافه شدن این کلمه کلیدی امکان کنترل بهتری برای ما فراهم شد.برای استفاده از when ، به بلاک catch، کلمه کلیدی when اضافه می کنیم. بلاک catch نیز زمانی استفاده می شود که شرط when صحیح باشد. همانند مثال زیر

private void CatchException(Action action)
{
    try
      {
         action.Invoke();
      }
       // exception filter
       catch (Exception ex) when (ex.Message.Contains(&quotwhen&quot))
         {
            Console.WriteLine(&quotCaught an exception with when&quot);
         }
          catch (Exception ex)
         {
       Console.WriteLine(&quotCaught an exception without when&quot);
         }
}


--------------------------------

از آنجاییکه که ورودی متد CatchException ما از نوع action می باشد این متد ها را می سازیم با یک دستور که خطای دستی ایجاد کنیم

private void Method1() { throw new Exception(&quotmessage for exception with when&quot); }
private void Method2() { throw new Exception(&quotmessage for general exception&quot); }

--------------------------------

در متد main متد catchException را فرا میخوانیم

CatchException(Method1);
CatchException(Method2);