Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 사용자 지정 예외(Custom Exception)란 무엇이고 어떻게 만들까요?

사용자 지정 예외란?

다른 프로그래밍 언어와 마찬가지로 C#에서도 개발자가 직접 정의한 예외를 손쉽게 만들 수 있습니다. 이렇게 만든 예외를 사용자 지정 예외(User-defined Exception), 즉 커스텀 예외라고 부르며, 사용자 지정 예외 클래스는 반드시 Exception 클래스를 상속받아 작성해야 합니다.

사용자 지정 예외를 활용하면 애플리케이션의 비즈니스 로직에 맞는 의미 있는 오류 메시지를 전달할 수 있어, 코드의 가독성과 유지보수성이 크게 향상됩니다.

아래 예제에서 사용된 TempIsZeroException은 C#에 내장된 예외가 아니라 직접 만든 커스텀 예외입니다.

예제 코드

다음 코드를 실행하면 C#에서 사용자 지정 예외를 생성하고 처리하는 과정을 직접 확인할 수 있습니다.

using System;

namespace Demo {
    class TestTemperature {
        static void Main(string[] args) {
            Temperature temp = new Temperature();
            try {
                temp.showTemp();
            } catch(TempIsZeroException e) {
                Console.WriteLine("TempIsZeroException: {0}", e.Message);
            }
            Console.ReadKey();
        }
    }
}

public class TempIsZeroException : Exception {
    public TempIsZeroException(string message) : base(message) {}
}

public class Temperature {
    int temperature = 0;

    public void showTemp() {

        if(temperature == 0) {
            throw (new TempIsZeroException("Zero Temperature found"));
        } else {
            Console.WriteLine("Temperature: {0}", temperature);
        }
    }
}

코드 설명

  • TempIsZeroException 클래스는 Exception 클래스를 상속받아 정의되며, 생성자에서 base(message)를 호출해 예외 메시지를 상위 클래스로 전달합니다.
  • Temperature 클래스의 showTemp() 메서드는 온도 값이 0이면 throw 키워드를 사용해 TempIsZeroException을 발생시킵니다.
  • Main 메서드에서는 try-catch 블록으로 발생한 예외를 잡아(catch), 예외 메시지를 콘솔에 출력합니다.

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

TempIsZeroException: Zero Temperature found