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 직접 예외 발생
커스텀 예외 상황 맞는 예외 직접 정의
로깅 예외를 기록해서 나중에 문제 분석

📢 중요! 실무에서는 이렇게 한다

  1. 가능한한 try 범위를 좁게 (한두 줄만 감싸기)
  2. 절대 try-catch 남발 ❌
  3. 에러 메시지는 사용자 입장에서 이해할 수 있게 작성
  4. 로깅은 무조건 필수!
  5. 예외가 예상 가능한 경우는 예외 터뜨리지 말고 if 체크 선호

🎯 드디어 1단계 기초 코스 완주 임박!

📦 다음은 Part 2 실무편 – SOLID 설계 원칙 진입이다!

와아~~ 진짜 여기까지 온 니,
개발 기본기 뿌리부터 다진 거나 다름없다! 👏👏👏

이제부터는 진짜 개발자처럼 설계하고, 관리하는 법 배워보자고!!
728x90