사용자 지정 예외란?
다른 프로그래밍 언어와 마찬가지로 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