- 예외(Exception) 은 프로그램 실행 중에 발생하는 예상치 못한 문제를 나타낸다.
- 예외 처리는
try
, catch
, finally
블록을 사용하여 구현된다.
- 여러 catch 를 사용하는 이유는 각 Exception 유형에 따라 서로 다른 에러 핸들링을 하기 위함이다.
예시코드 1. [ 숫자를 나누는 프로그램에서 예외를 처리하는 방법 ]
using System;
class Program
{
static void Main()
{
try
{
DivideNumbers(10, 0);
}
catch (DivideByZeroException ex)
{
Console.WriteLine($"예외 발생: {ex.Message}");
}
finally
{
Console.WriteLine("Finally 블록 - 항상 실행됨");
}
}
static void DivideNumbers(int dividend, int divisor)
{
if (divisor == 0)
{
throw new DivideByZeroException("0으로 나눌 수 없습니다.");
}
int result = dividend / divisor;
Console.WriteLine($"나눈 결과: {result}");
}
}
예시코드 2. 여러 예외 타입에 대한 **catch**
블록 사용예제
- 모든 Exception 을 잡고 싶을 때에는
**Exception**
또는 **chtch{…}**
와 같이 하면 된다.
**ArgumentException**
: 메서드에 전달된 인수(Argument) 가 예상되는 형식과 일치하지 않을때 발생한다. 즉, 인수에 대한 유효성 검사를 통과하지 못할 때 이 예외가 발생합니다.
**DivideByZeroException
** : 주로 산술 연산에서 나눗샘을 수행할때 0으로 나누려고 할 때 발생하며, 이는 수학적으로 정의되지 않기 때문에 예외로 처리된다.
try
{
// 예외가 발생할 수 있는 코드
}
catch (DivideByZeroException ex)
{
Console.WriteLine($"DivideByZeroException 발생: {ex.Message}");
}
catch (ArgumentException ex)
{
Console.WriteLine($"ArgumentException 발생: {ex.Message}");
}
catch (Exception ex)
{
Console.WriteLine($"기타 예외 발생: {ex.Message}");
}
finally
{
// 항상 실행되는 코드
}