C#
예외가 뭐길래? C# try-catch-finally 한 번에 정리
록's
2025. 4. 30. 09:24
728x90
반응형
C# 예외 처리(Exception Handling)란?
프로그래밍을 하다 보면 예상하지 못한 오류가 발생할 수 있습니다.
예를 들어, 파일이 없거나, 0으로 나누거나, 배열의 범위를 벗어난 값을 접근할 때 등 다양한 상황에서 예외(Exception)가 발생합니다.
C#에서는 이런 예외 상황을 안전하게 처리하기 위해 try-catch-finally 구문을 사용합니다.
1. 기본 구조
try
{
// 예외가 발생할 수 있는 코드
}
catch (Exception ex)
{
// 예외가 발생했을 때 실행할 코드
}
finally
{
// 예외 발생 여부와 상관없이 항상 실행되는 코드 (선택)
}
- try 블록: 예외가 발생할 수 있는 코드를 작성합니다.
- catch 블록: 예외가 발생했을 때 실행할 코드를 작성합니다.
Exception ex는 발생한 예외 정보를 담고 있습니다. - finally 블록: 예외 발생 여부와 관계없이 항상 실행됩니다. (자원 해제 등)
2. 예제: 0으로 나누기
try
{
int a = 10;
int b = 0;
int result = a / b; // 여기서 예외 발생
Console.WriteLine(result);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("0으로 나눌 수 없습니다.");
Console.WriteLine("예외 메시지: " + ex.Message);
}
finally
{
Console.WriteLine("프로그램 종료");
}
실행 결과:
0으로 나눌 수 없습니다.
예외 메시지: 0으로 나눌 수 없습니다.
프로그램 종료
3. 여러 종류의 예외 처리
여러 종류의 예외가 발생할 수 있으므로, 여러 개의 catch 블록을 사용할 수 있습니다.
try
{
// 예외 발생 가능 코드
}
catch (DivideByZeroException ex)
{
// 0으로 나눌 때
}
catch (IndexOutOfRangeException ex)
{
// 배열 인덱스 범위 벗어날 때
}
catch (Exception ex)
{
// 그 외 모든 예외
}
4. 사용자 정의 예외
특정 상황에서 직접 예외를 발생시키고 싶을 때는 throw 키워드를 사용합니다.
if (age < 0)
{
throw new ArgumentException("나이는 0보다 작을 수 없습니다.");
}
5. 실무에서의 예외 처리 팁
- 불필요하게 모든 예외를 무시하지 마세요.!!
catch (Exception ex) {}처럼 예외를 무시하면 문제의 원인을 찾기 어렵습니다. - 구체적인 예외를 먼저 처리하세요.!!
예를 들어, DivideByZeroException, NullReferenceException 등 구체적인 예외부터 처리하고, 마지막에 Exception으로 모든 예외를 포괄하세요. - finally 블록을 활용해 자원 해제!!
파일, 데이터베이스 연결 등은 finally에서 안전하게 닫아주세요. - 로그를 남기세요.!!
예외 발생 시 로그를 남기면, 나중에 문제를 추적하기 쉽습니다.
마무리
예외 처리는 프로그램의 안정성과 신뢰성을 높이는 데 필수적인 요소입니다.
try-catch-finally 구조와 다양한 예외 처리 방법을 익혀두면, 실무에서 발생하는 다양한 오류 상황에 유연하게 대처할 수 있습니다.
728x90
반응형