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 반환 경로만 확인하면 됩니다 — 예외 자체가 잘못된 입력에 대한 관찰 가능한 결과입니다.
챌린지
중급InvalidTemperatureException이라는 이름의 사용자 정의 예외 클래스 Exception을 상속받도록 만드세요. 다음을 가져야 합니다:
- 메시지를 "Temperature is not valid."로 설정하는 기본 생성자
- 사용자 지정 메시지를 받아들이는 생성자
그런 다음 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)
{
// 여기에 코드를 작성하세요
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 및 흐름의 모든 레슨
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety