Contents
접기
728x90
기본 개념
try-catch-finally는 예외(오류) 처리를 위한 문법
✔ 프로그램이 예상치 못한 오류로 중단되지 않도록 보호
✔ try 블록에서 예외 발생 시 catch에서 처리
✔ finally 블록은 예외 발생 여부와 관계없이 실행 (선택 사항)
기본 구조
try
{
// 예외가 발생할 가능성이 있는 코드
}
catch (Exception ex)
{
// 예외 발생 시 실행되는 코드
}
finally
{
// 항상 실행되는 코드 (선택 사항)
}
try-catch 예제
try
{
int a = 10;
int b = 0;
int result = a / b; // 0으로 나누기 → 예외 발생
Console.WriteLine(result); // 실행되지 않음
}
catch (DivideByZeroException ex)
{
Console.WriteLine($"오류 발생: {ex.Message}");
}
💡 결과
오류 발생: 0으로 나눌 수 없습니다.
📌 b = 0 → DivideByZeroException 발생
📌 catch 블록이 실행되어 예외 메시지 출력
finally 블록 사용
try
{
Console.WriteLine("파일을 엽니다.");
throw new Exception("파일을 찾을 수 없습니다."); // 예외 강제 발생
}
catch (Exception ex)
{
Console.WriteLine($"오류 발생: {ex.Message}");
}
finally
{
Console.WriteLine("파일을 닫습니다."); // 예외 발생 여부와 관계없이 실행됨
}
💡 결과
파일을 엽니다.
오류 발생: 파일을 찾을 수 없습니다.
파일을 닫습니다.
📌 finally 블록은 항상 실행됨
📌 파일 닫기, 데이터 정리 등에 사용
📌 예외가 발생하지 않아도 finally는 실행됨 (try-finally만 써도 try, finally둘 다 실행)
여러 개의 catch 블록 사용
try
{
string str = null;
Console.WriteLine(str.Length); // NullReferenceException 발생
}
catch (NullReferenceException ex)
{
Console.WriteLine("널 값에 접근할 수 없습니다!");
}
catch (Exception ex) // 모든 예외 처리
{
Console.WriteLine($"오류 발생: {ex.Message}");
}
💡 결과
널 값에 접근할 수 없습니다!
📌 특정 예외 먼저 처리하고, 일반 예외는 마지막에 처리
📖 정리
✔ try → 예외가 발생할 가능성이 있는 코드 실행
✔ catch → 예외 발생 시 실행 (예외 정보 처리 가능)
✔ finally → 예외 발생 여부와 관계없이 실행 (선택 사항, 정리 작업에 사용)
✔ 여러 개의 catch 블록을 사용해 다양한 예외 처리 가능
728x90
'C# > 제어문' 카테고리의 다른 글
[C#] foreach문 (0) | 2025.04.15 |
---|---|
[C#] 예외처리 throw (0) | 2025.03.24 |
[C#] 분기문 return (0) | 2025.03.24 |
[C#] 분기문 continue (0) | 2025.03.24 |
[C#] 분기문 break (0) | 2025.03.24 |