반응형
예외 처리
try, catch, finally
C#에서는 예외 처리 메커니즘을 사용하여 프로그램의 비정상적인 상황을 처리할 수 있습니다. 예외는 `try`, `catch`, `finally` 구문을 사용하여 처리합니다.
예외 처리 구조
- `try`: 예외가 발생할 수 있는 코드 블록을 작성합니다. - `catch`: 예외가 발생했을 때 그 예외를 처리합니다. - `finally`: 예외 발생 여부와 관계없이 항상 실행되는 블록입니다.
try
{
int result = 10 / 0; // 0으로 나누기
}
catch (DivideByZeroException ex)
{
Console.WriteLine("예외 발생: " + ex.Message);
}
finally
{
Console.WriteLine("이 코드는 예외 발생 여부와 상관없이 실행됩니다.");
}
위 코드에서 0으로 나누기 예외가 발생하지만, `catch`에서 예외를 처리하고 `finally` 블록이 항상 실행됩니다.
예외 클래스 상속 및 사용자 정의 예외
C#에서는 기본 예외 클래스인 `Exception`을 상속하여 사용자 정의 예외를 만들 수 있습니다. 이를 통해 애플리케이션에서 발생하는 특정한 예외를 처리할 수 있습니다.
사용자 정의 예외 클래스
public class InvalidAgeException : Exception
{
public InvalidAgeException(string message) : base(message) { }
}
class Program
{
static void Main()
{
try
{
throw new InvalidAgeException("나이가 유효하지 않습니다.");
}
catch (InvalidAgeException ex)
{
Console.WriteLine("사용자 정의 예외 발생: " + ex.Message);
}
}
}
위 코드에서는 `InvalidAgeException`이라는 사용자 정의 예외를 만들고, 이를 `throw`를 사용하여 발생시켰습니다. 사용자 정의 예외를 사용하면 프로그램에서 더 구체적인 예외 처리가 가능합니다.
예외의 전파
예외는 발생한 지점에서 즉시 처리하지 않으면 호출자에게 전파됩니다. 예외를 처리하지 않으면 프로그램의 상위 수준으로 전파되어, `catch`가 있는 곳에서 처리될 때까지 전달됩니다.
예외 전파 예제
public class Program
{
static void Main()
{
try
{
Method1();
}
catch (Exception ex)
{
Console.WriteLine("예외 처리: " + ex.Message);
}
}
static void Method1()
{
Method2();
}
static void Method2()
{
throw new Exception("예외가 Method2에서 발생");
}
}
`Method2`에서 예외가 발생하고, 이 예외는 `Method1`을 거쳐 `Main` 메서드로 전파되어 최종적으로 `catch`에서 처리됩니다.
반응형
'Programming' 카테고리의 다른 글
| C# 모듈화와 테스트 (65) | 2025.12.16 |
|---|---|
| C# 파일 입출력 (31) | 2025.12.15 |
| C# NET Core (0) | 2025.12.13 |
| C# WPF/WinForms UI 프로그래밍 (0) | 2025.12.12 |
| C# LINQ(Language Integrated Query) (0) | 2025.12.11 |