ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 예외 처리
    C# 2023. 8. 24. 20:05

     I. 예외 처리

       : 예외 상황을 처리하는 메커니즘.

     

    try
    {
        "실행 코드"
    }
    catch ("예외 타입" "예외 타입 객체")
    {
        "예외 타입" 에 대한 예외 처리 코드"
    }
    finally
    {
        "항상 실행되는 코드"
    }

     

    예외 (Exception)

      : 프로그램 실행 중에 발생하는 예기치 않은 상황

      : 프로그램의 정상적인 흐름을 방해하고 오류를 야기함.

     

    예외처리의 필요성

        : 오류 상황을 적절히 처리하고, 프로그램의 실행을 계속할 수 있음.

        : 프로그램의 안정성을 높이고 디버깅을 용이하게 함.

     

    catch 블록

      : 위에서부터 순서대로 실행.

      : 상속 관계에 있는 경우 상위 클래스의 예외 타입의 catch 블록이 먼저 실행.

    try
    {
        int result = 10 / 0;  // 실행하려고 하는 코드
        Console.WriteLine("결과: " + result);
    }
    catch (DivideByZeroException ex)                        // 먼저 실행 : 실행할시 나타날 수 있는 오류
    {
        Console.WriteLine("0으로 나눌 수 없습니다.");
    }
    catch (Exception ex)                                    // 이후에 실행
    {
        Console.WriteLine("예외가 발생했습니다: " + ex.Message);
    }

     

     

    finally 블록

      : 예외의 발생과 상관없이 무조건 실행.

      : else 처럼 생략이 가능함

    finally
    {
        Console.WriteLine("finally 블록이 실행되었습니다.");
    }

     

    사용자 정의 예외 처리

      : 필요에 따라 Exception 클래스를 상속받는 것으로 새 클래스를 만들 수 있다.

    public class NegativeNumberException : Exception          // Exception 클래스 상속
    {
        public NegativeNumberException(string message) : base(message) // 사용자 지정 예외 처리 클래스의 생성자
        // !!  base(message) = 이니셜라이저 : 부모 클래스 Exception의 생성자에 message를 먼저 전달
        {
        }
    }
    
    try
    {
        int number = -10;
        if (number < 0)
        {
            throw new NegativeNumberException("음수는 처리할 수 없습니다."); // 사용자 예외 처리 지정
        }
    }
    catch (NegativeNumberException ex)
    {
        Console.WriteLine(ex.Message);
    }
    catch (Exception ex)
    {
        Console.WriteLine("예외가 발생했습니다: " + ex.Message);
    }

     

    무차별적으로 예외처리를 하면 코드가 지저분해지므로, 필요한 곳에만 하도록 하자...

     

     

    'C#' 카테고리의 다른 글

    델리게이트  (0) 2023.08.25
    값형과 참조형  (0) 2023.08.24
    인터페이스와 열거형  (0) 2023.08.24
    텍스트 던전 콘솔로 구현하기 - 작업중 학습(2)  (0) 2023.08.23
    스네이크 게임 만들기 (수정예정)  (0) 2023.08.21
Designed by Tistory.