C#

[C#]throw문, 사용자 정의 예외

DevStory 2022. 6. 26.

C#의 예외 유형

C#에서 예외는 다음과 같이 두 가지 유형으로 분류됩니다.

1. 시스템 예외(System exception)

2. 애플리케이션 예외(Application exception)


시스템 예외

시스템 예외란 프로그램 실행 중 사전에 정의된 조건에 인해 예외 관리자가 암시적으로 발생시키는 것을 말합니다.

 

예를 들어, 배열의 범위를 벗어나는 IndexOutOfRangeException, null로 초기화된 객체를 접근하는 NullReferenceException, DataBase에서 에러가 발생하는 SQLException 등 BCL(Base Class Libraries)에 정의된 예외를 말합니다.


애플리케이션 예외

어플리케이션애플리케이션 예외는 프로그래머가 작성한 소스코드를 기반으로 프로그램에서 명시적으로 발생하는 예외를 애플리케이션 예외라고 말합니다. 즉, 프로그래머가 예외를 발생시킬 수 있습니다.

 

프로그래머가 예외를 발생시키려면 다음 과정을 만족해야 합니다.

1. 예외 클래스의 객체를 생성합니다.

2. throw문을 사용하여 예외 클래스의 객체를 던져야합니다.

 

예외 클래스의 객체를 생성하고 throw문을 사용하여 예외 클래스의 객체를 던지는 과정에서 IndexOutOfRangeException, SQLException 등 시스템 예외 클래스를 사용해서는 안됩니다.


사용자 정의 예외 만드는 방법

예외 클래스를 만들기 위해서는 다음 과정을 따라야 합니다.

1. Exception 클래스에서 상속하는 사용자 정의 클래스를 정의합니다.

2. Message 프로퍼티를 오버라이딩하여 에러 메시지를 설정합니다.


사용자 정의 예외 예제

다음 예제는 사용자 정의 예외 클래스를 정의하고 콘솔에서 입력한 값이 10보다 큰 경우 사용자 정의 클래스 객체를 throw문을 사용하여 던집니다.

// 1. Exception 클래스를 상속하여 사용자 정의 예외 클래스 정의합니다.
public class CustomException : Exception
{
  // 2. Message 프로퍼티를 오버라이딩합니다.
  public override string Message
  {
    get
    {
      return "10보다 큽니다.";
    }
  }
}

class Program
{
  static void Main(string[] args)
  {
    int num;
    num = int.Parse(Console.ReadLine());

    try
    {
      // 입력한 값이 10보다 큰 경우 throw문을 사용하여 예외를 던집니다.
      if (num > 10)
      {
        throw new CustomException();
      }
    } 
    catch(CustomException ex)
    {
      // 사용자 정의 클래스의 Message 프로퍼티를 출력합니다.
      Console.WriteLine(ex.Message);
    }
  }
}

실행 결과

20
10보다 큽니다.

throw문은 다음과 같이 변경할 수 있습니다.

 

변경 전

throw new CustomException();

변경 후

CustomException customException = new CustomException();
throw customException;

정리

  • 프로그래머가 예외 클래스를 정의하여 명시적으로 예외를 발생시킬 수 있습니다.
  • 사용자 정의 예외를 발생시키기 위해 throw문을 사용합니다.
반응형

댓글