C#
C# 기초부터 고급까지 Chapter 1.10. 예외 처리 완전정복
Juan_
2025. 4. 27. 09:39
728x90
📚 Chapter 1.10: 예외 처리 완전정복
✅ 이 챕터에서 배울 것
프로그램은 무조건 문제가 생긴다!
에러를 "잘 다루는 게" 개발자의 품격이다.
- 예외(Exception)란 무엇인가?
- try-catch-finally 기본 구조
- throw로 예외 던지기
- 커스텀 예외 만들기
- 로깅으로 예외 기록 남기기
⚡ 1. 예외(Exception)란?
✅ 프로그램 실행 중 "문제가 생긴 상황"을 객체로 표현한 것
- 파일이 없을 때 (FileNotFoundException)
- 네트워크 끊길 때 (SocketException)
- 숫자 0으로 나눌 때 (DivideByZeroException)
→ 전부 다 "예외" 객체로 처리한다!
⚡ 2. try-catch-finally 기본 구조
try
{
int x = 10;
int y = 0;
int result = x / y; // 여기서 예외 발생
}
catch (DivideByZeroException ex)
{
Console.WriteLine("0으로 나눌 수 없습니다!");
Console.WriteLine($"에러 메시지: {ex.Message}");
}
finally
{
Console.WriteLine("정리 작업 실행!");
}
✅ 정리:
- try: 문제날 가능성 있는 코드
- catch: 예외 발생하면 실행
- finally: 예외 발생 여부 상관없이 무조건 실행
⚡ 3. throw로 예외 던지기
✅ "이 상황은 문제가 있으니 예외를 터뜨린다"는 뜻!
public void CheckAge(int age)
{
if (age < 0)
throw new ArgumentException("나이는 0 이상이어야 합니다!");
}
- throw 뒤에는 Exception 객체가 온다.
- 직접 예외를 던져서 상위 호출자에게 경고할 수 있다!
⚡ 4. 커스텀 예외 만들기 (Custom Exception)
✅ 실무에서는 자기 상황에 맞는 예외 타입 만들어 쓰는 게 깔끔하다!
public class NotEnoughBalanceException : Exception
{
public NotEnoughBalanceException(string message) : base(message)
{
}
}
public class Account
{
private int balance = 500;
public void Withdraw(int amount)
{
if (amount > balance)
throw new NotEnoughBalanceException("잔액이 부족합니다.");
balance -= amount;
}
}
✅ 커스텀 예외는 Exception
상속해서 만든다
⚡ 5. 로깅 (Logging)
✅ 예외를 그냥 콘솔에 찍고 끝내면 아까비!
파일이나 시스템에 "기록"을 남겨야 실전이다!
🛠️ 간단한 파일 로깅 예제
try
{
int x = int.Parse("문자열");
}
catch (FormatException ex)
{
File.AppendAllText("error_log.txt", $"[{DateTime.Now}] {ex.Message}\n");
Console.WriteLine("오류 발생! 로그를 남겼습니다.");
}
✅ 실패한 이유, 시간, 메세지를 기록!
(실무에서는 Serilog, NLog 같은 전문 로깅 라이브러리 사용)
💥 장선생 실전 꿀팁
주제 | 꿀팁 |
---|---|
catch (Exception ex) | 최상위 예외 캐치할 때만! 필요한 경우에만! |
finally | 파일 닫기, DB 연결 끊기 같은 "무조건 해야 하는 정리"에 쓰기 |
throw new | 예외를 직접 던질 땐 최대한 명확한 메시지 남기기 |
로깅 | 예외 내용 + 발생 시각 + 사용자 정보까지 남기면 좋다 |
✅ 요약 정리
개념 | 요약 |
---|---|
try-catch-finally | 예외 처리 기본 구조 |
throw | 직접 예외 발생 |
커스텀 예외 | 상황 맞는 예외 직접 정의 |
로깅 | 예외를 기록해서 나중에 문제 분석 |
📢 중요! 실무에서는 이렇게 한다
- 가능한한 try 범위를 좁게 (한두 줄만 감싸기)
- 절대 try-catch 남발 ❌
- 에러 메시지는 사용자 입장에서 이해할 수 있게 작성
- 로깅은 무조건 필수!
- 예외가 예상 가능한 경우는 예외 터뜨리지 말고 if 체크 선호
🎯 드디어 1단계 기초 코스 완주 임박!
📦 다음은 Part 2 실무편 – SOLID 설계 원칙 진입이다!
와아~~ 진짜 여기까지 온 니,
개발 기본기 뿌리부터 다진 거나 다름없다! 👏👏👏
이제부터는 진짜 개발자처럼 설계하고, 관리하는 법 배워보자고!!
728x90