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

C# 사용자 정의 예외(Exception) 만들기: Exception 클래스 상속과 활용법

C#에서 예외(Exception)는 클래스로 표현됩니다. C#의 예외 클래스들은 대부분 System.Exception 클래스를 직접 또는 간접적으로 상속받아 구성됩니다.

.NET이 제공하는 기본 예외 클래스 외에도, 개발자는 자신만의 사용자 정의 예외(User-defined Exception)를 만들 수 있습니다. 사용자 정의 예외 클래스는 Exception 클래스를 상속하여 정의하며, 이를 통해 애플리케이션의 도메인에 맞는 의미 있는 오류 정보를 전달할 수 있습니다.

사용자 정의 예외 작성 방법

사용자 정의 예외를 만드는 기본 절차는 다음과 같습니다.

  1. Exception 클래스를 상속하는 새 클래스를 선언합니다.
  2. 생성자에서 base(message)를 호출해 예외 메시지를 부모 클래스에 전달합니다.
  3. 필요한 시점에 throw 키워드로 해당 예외를 발생시킵니다.
  4. try-catch 블록에서 사용자 정의 예외를 잡아 처리합니다.

예제 코드

다음은 온도가 0일 때 발생시키는 TempIsZeroException이라는 사용자 정의 예외의 예입니다.

using System;

namespace UserDefinedException {
    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);
        }
    }
}

코드 설명

1. TempIsZeroException 클래스

TempIsZeroExceptionException 클래스를 상속받는 사용자 정의 예외 클래스입니다. 생성자에서 문자열 매개변수 message를 받아 base(message)로 전달함으로써, 예외가 발생했을 때 Message 속성을 통해 오류 내용을 확인할 수 있습니다.

2. Temperature 클래스

Temperature 클래스의 showTemp() 메서드는 저장된 온도 값이 0이면 throw 문을 사용해 TempIsZeroException을 발생시키고, 그렇지 않으면 현재 온도를 콘솔에 출력합니다.

3. try-catch를 통한 예외 처리

Main 메서드에서는 try 블록 안에서 showTemp()를 호출하고, catch 블록에서 TempIsZeroException 타입으로 예외를 잡아 예외 메시지를 출력합니다.

실행 결과

위 프로그램을 실행하면 초기 온도 값이 0이므로 다음과 같은 결과가 출력됩니다.

TempIsZeroException: Zero Temperature found

정리

사용자 정의 예외를 활용하면 단순한 시스템 오류 코드 대신, 비즈니스 로직에 맞는 명확하고 읽기 쉬운 오류 메시지를 전달할 수 있습니다. 예외 이름과 메시지만 보고도 어떤 문제가 발생했는지 즉시 파악할 수 있도록, 프로젝트의 도메인 규칙에 맞는 예외 클래스를 설계하는 것이 좋은 C# 프로그래밍 습관입니다.