Menu
Coddy logo textTech

Custom Exceptions

Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 29번째.

사용자 정의 예외는 애플리케이션의 고유한 오류 시나리오에 대한 특정 예외 유형을 생성할 수 있게 합니다.

사용자 정의 예외를 만들려면, Exception에서 상속받는 클래스를 정의하세요. 상속은 새 클래스가 부모 클래스의 모든 동작을 자동으로 얻게 하는 것을 의미합니다 — 이 경우 Exception — 동시에 기능을 추가하거나 사용자 지정할 수 있게 합니다. class MyException : Exception 구문은 MyException이 Exception을 확장한다는 의미입니다.

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

: Exception — 내장된 Exception 클래스에서 상속받습니다.
: base(...) — 부모 Exception 생성자를 호출하여 오류 메시지를 설정합니다.
첫 번째 생성자는 지정되지 않을 때 기본 메시지를 제공합니다.
두 번째 생성자는 호출자가 오류를 자세히 설명할 수 있도록 사용자 지정 메시지를 허용합니다.

이제 필요할 때 사용자 정의 예외를 던질 수 있습니다:

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

이 코드가 음수 나이로 실행될 때, 사용자 정의 예외를 발생시키며 메시지는 "Age cannot be negative."입니다.

참고: 이 레슨의 연습 문제에서 유효성 검사 함수는 입력이 유효할 때 true를 반환하고 그렇지 않을 때는 사용자 정의 예외를 발생시킵니다. 처리되지 않은 예외는 실행을 즉시 중지하기 때문에 테스트 케이스는 true 반환 경로만 확인하면 됩니다 — 예외 자체가 잘못된 입력에 대한 관찰 가능한 결과입니다.

challenge icon

챌린지

중급

InvalidTemperatureException이라는 이름의 사용자 정의 예외 클래스 Exception을 상속받도록 만드세요. 다음을 가져야 합니다:

  1. 메시지를 "Temperature is not valid."로 설정하는 기본 생성자
  2. 사용자 지정 메시지를 받아들이는 생성자

그런 다음 checkTemperature이라는 이름의 메서드를 구현하세요. 이 메서드는:

  • 섭씨 온도를 나타내는 정수 매개변수를 받습니다
  • 온도가 -273보다 작으면 메시지 "Temperature below absolute zero!"와 함께 InvalidTemperatureException을 throw 합니다
  • 온도가 유효하면 true를 반환합니다

치트 시트

사용자 정의 예외를 만들려면 Exception에서 상속받는 클래스를 정의하세요:

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

필요할 때 사용자 정의 예외를 throw하세요:

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

직접 해보기

using System;

class CheckTemperature
{
    // 여기에 사용자 정의 예외 클래스를 생성하세요
    
    public static bool checkTemperature(int celsius)
    {
        // 여기에 코드를 작성하세요
    }
    
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 및 흐름의 모든 레슨