Contents
접기
728x90
기본 개념
throw 문은 예외(오류)를 강제로 발생시킬 때 사용
✔ 특정 조건에서 직접 예외를 발생시키고 싶을 때
✔ try-catch 블록과 함께 사용하여 예외 처리 가능
✔ 기존 예외를 다시 던질 수도 있음
기본 사용법
throw new 예외클래스("예외 메시지");
직접 예외 발생시키기
void CheckAge(int age)
{
if (age < 0)
{
throw new ArgumentException("나이는 음수가 될 수 없습니다.");
}
Console.WriteLine($"입력한 나이: {age}");
}
CheckAge(25); // 정상 출력
CheckAge(-5); // 예외 발생
💡 결과
Unhandled exception. System.ArgumentException: 나이는 음수가 될 수 없습니다.
📌 age < 0이면 throw 문이 실행되어 예외 발생 & 프로그램 종료
try-catch와 함께 사용
try
{
throw new InvalidOperationException("잘못된 연산입니다.");
}
catch (Exception ex)
{
Console.WriteLine($"오류 발생: {ex.Message}");
}
💡 결과
오류 발생: 잘못된 연산입니다.
📌 예외 발생 후 catch에서 처리되므로 프로그램이 종료되지 않음
예외를 다시 던지기 (throw;)
void Process()
{
try
{
throw new Exception("처리 중 오류 발생!");
}
catch (Exception ex)
{
Console.WriteLine("오류를 로깅했습니다.");
throw; // 예외를 다시 던짐 (rethrow)
}
}
try
{
Process();
}
catch (Exception ex)
{
Console.WriteLine($"최종 오류 처리: {ex.Message}");
}
💡 결과
오류를 로깅했습니다.
최종 오류 처리: 처리 중 오류 발생!
📌 throw;을 사용하면 기존 예외를 그대로 다시 던짐
📌 상위 catch 블록에서 최종적으로 예외를 처리 가능
특정 조건에서 예외 발생
void Divide(int a, int b)
{
if (b == 0)
{
throw new DivideByZeroException("0으로 나눌 수 없습니다!");
}
Console.WriteLine($"결과: {a / b}");
}
try
{
Divide(10, 0);
}
catch (DivideByZeroException ex)
{
Console.WriteLine($"오류 발생: {ex.Message}");
}
💡 결과
오류 발생: 0으로 나눌 수 없습니다!
📌 b == 0인 경우, 직접 예외를 발생시키고 catch에서 처리
📖정리
✔ throw → 예외를 강제로 발생
✔ try-catch와 함께 사용하여 프로그램이 중단되지 않도록 처리 가능
✔ throw; → 현재 예외를 다시 던짐 (예외 로그 후 재처리 가능)
728x90
'C# > 제어문' 카테고리의 다른 글
[C#] foreach문 (0) | 2025.04.15 |
---|---|
[C#] 예외처리 try-catch-finally (0) | 2025.03.24 |
[C#] 분기문 return (0) | 2025.03.24 |
[C#] 분기문 continue (0) | 2025.03.24 |
[C#] 분기문 break (0) | 2025.03.24 |