< 예외 종류 >
이름 / 의미 / 상황
| FormatException | 형식이 맞지 않는 경우 | "abc"를 int.Parse()로 변환할 때 |
| ArgumentException | 잘못된 인자가 전달됨 | 메서드에 잘못된 값 전달 |
| ArgumentNullException | null이 전달됨 | null을 허용하지 않는 메서드에 null 전달 |
| ArgumentOutOfRangeException | 범위를 벗어난 값 전달 | 리스트 인덱스가 0~9인데 10을 접근 |
| IndexOutOfRangeException | 배열/리스트 인덱스 범위 초과 | 배열 길이보다 큰 인덱스 접근 |
| NullReferenceException | null 참조 시 | null 객체의 메서드 호출 |
| InvalidOperationException | 잘못된 상태에서 메서드 호출 | 이미 종료된 스트림에 쓰기 시도 |
| DivideByZeroException | 0으로 나눌 때 | int x = 10 / 0; |
| FileNotFoundException | 파일을 찾을 수 없음 | 존재하지 않는 파일 열기 |
| IOException | 입출력 오류 | 파일 읽기/쓰기 중 문제 발생 |
| OutOfMemoryException | 메모리 부족 | 매우 큰 배열 생성 시 |
| StackOverflowException | 스택 오버플로우 | 재귀 호출이 끝없이 반복될 때 |
| NotImplementedException | 미구현 메서드 호출 | TODO로 남긴 메서드 호출 |
try
{
int age = int.Parse(txtAge.Text);
}
catch (FormatException)
{
MessageBox.Show("나이는 숫자로 입력해야 합니다.");
}
catch (NullReferenceException)
{
MessageBox.Show("입력창이 비어 있습니다.");
}
catch (Exception ex)
{
MessageBox.Show("예상치 못한 오류: " + ex.Message);
}
-
* 예외 계층 구조
System.Object
└─ System.Exception
├─ System.SystemException
│ ├─ System.ArgumentException
│ │ ├─ System.ArgumentNullException
│ │ ├─ System.ArgumentOutOfRangeException
│ ├─ System.FormatException
│ ├─ System.IndexOutOfRangeException
│ ├─ System.NullReferenceException
│ ├─ System.InvalidOperationException
│ └─ System.DivideByZeroException
└─ System.ApplicationException
< 예외정보를 담는 변수 >
발생한 예외의 내용을 자세히 알기 위해 사용하는 변수
| catch (Exception) | 모든 예외를 잡지만 예외 정보는 사용 안 함 |
| catch (Exception ex) | 예외를 잡고, 그 정보를 ex 변수로 활용 가능 |
| ex.Message | 오류 메시지 |
| ex.StackTrace | 어디서 오류가 났는지 |
| ex.GetType() | 오류의 종류 |
try
{
int n = int.Parse("abc");
}
catch (Exception ex)
{
// 1️⃣ 기본 메시지
MessageBox.Show("오류 메시지: " + ex.Message);
// 2️⃣ 예외 타입 확인
Console.WriteLine("예외 타입: " + ex.GetType().Name);
// 3️⃣ 어디서 오류가 났는지 추적
Console.WriteLine("발생 위치: " + ex.StackTrace);
}'C#' 카테고리의 다른 글
| 학생 조회 프로그램 - 함수 설명 (기능명세서) (0) | 2025.11.04 |
|---|---|
| 학생 조회 프로그램 (0) | 2025.11.03 |
| Auto-Property (0) | 2025.11.03 |
| C# 클래스 만들기 (0) | 2025.11.03 |
| 반복문과 제어 (0) | 2025.11.03 |