본문 바로가기

워크/C# 6,0

Exception Filters (예외 필터)

C# 6.0에서 도입된 예외 필터는 catch 절에서 예외를 처리하기 전에 추가적인 조건을 제공하여 특정 조건이 충족될 때만 해당 catch 절을 실행하게 할 수 있습니다. 예외 필터를 사용하면, 다양한 종류의 예외나 특정 조건에 따라 다른 처리 로직을 적용할 때 코드를 더욱 간결하고 명확하게 만들 수 있습니다.

다음은 예외 필터를 사용한 예시 C# 코드입니다:

using System;

class Program
{
    static void Main()
    {
        try
        {
            // 임의로 예외를 발생시킴
            throw new ArgumentException("This is an argument exception", "testParam");
        }
        catch (ArgumentException ex) when (ex.ParamName == "testParam")
        {
            Console.WriteLine($"Caught an argument exception for parameter: {ex.ParamName}");
        }
        catch (ArgumentException ex)
        {
            Console.WriteLine("Caught an argument exception");
        }
        catch (Exception)
        {
            Console.WriteLine("Caught a general exception");
        }
    }
}

위의 예제에서 첫 번째 catch 절은 ArgumentException 예외를 캐치하며, 예외 필터 when (ex.ParamName == "testParam")을 사용하여 ParamName 속성이 "testParam"일 때만 해당 catch 절이 실행되게 합니다.

이렇게 예외 필터를 사용하면 특정 조건에 따라 여러 catch 절 중에서 적절한 것을 선택하여 실행할 수 있어 코드의 가독성과 유지 보수성이 향상됩니다.