자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[C#] 11장. C# 예외 처리

728x90

📙 1. C# 예외 처리 (Exception Handling) 

C# 프로그램은 실행 도중 예상치 못한 오류(ex.Exception)가 발생하면, 프로그램이 자체적으로 중단될 수 있습니다. 이런 상황을 안전하게 처리하기 위해 try, catch, finally와 사용자 정의 예외를 사용해 방지할 수 있습니다.

try
{
    // 예외가 발생할 가능성이 있는 코드
}
catch (예외형식 e)
{
    // 예외 발생 시 실행되는 코드
}
finally
{
    // 예외 발생 여부와 상관없이 무조건 실행되는 코드
}
  • try: 예외가 발생할 수 있는 코드 블록
  • catch: 특정 예외를 잡아서 처리 
  • finally: 예외 발생 여부와 상관 없이 실행 (자원 해제, 연결 종료 등에 자주 사용됨)

📙 2. C# 기본적 예외 처리예제

using System;

class Program
{
    static void Main()
    {
        try
        {
            Console.WriteLine("숫자를 입력하세요:");
            int num = int.Parse(Console.ReadLine()); // 예외 발생 가능
            Console.WriteLine($"입력한 숫자: {num}");
        }
   
        catch (FormatException e)
        {
            Console.WriteLine("숫자 형식이 아닙니다");

        }
        catch (OverflowException e) {
            Console.WriteLine("숫자가 너무 큽니다!");
        }
        finally
        {
            Console.WriteLine("프로그램 종료 전 반드 시 실행됩니다");
        }
    }
}

 

📌 실행 결과

  • 123 입력 -> "입력 숫자 123" -> finally 실행
  • abc 입력 -> "숫자 형식이 아닙니다" -> finally 실행

📙 3. 다중 catch 

다중 catch는 여러 개의 catch 블록을 들 수 있습니다. 

class Catch
{
    static void Main()
    {
        try 
        {
            int[] arr = { 1, 2, 3 };
            Console.WriteLine(arr[2]); // ✅ 가능 - 2번쨰 인덱스 - 3

            Console.WriteLine(arr[5]); // IndexOutOfRangeExecption 발생
        }
        catch (IndexOutOfRangeException e)
        {
            Console.WriteLine("배열 인덱스가 잘못되었습니다."); 
        }
        catch (Exception e)
        {
            Console.WriteLine("예상치 못한 오류: " + e.Message);
        }
    }
}

📙 4. finally의 활용

finally는 예외 여부와 상관없이 항상 실행됩니다.

using System;

class Finally
{
    static void Main()
    {
        try
        {
            System.IO.StreamReader sr = new System.IO.StreamReader("test.txt");
            Console.WriteLine(sr.ReadToEnd());
            sr.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine("파일 읽기 오류: " + e.Message);
        }
        finally
        {
            Console.WriteLine("파일 처리 종료 (자원 해제)");
        }

    }
}
  • 파일 저장 위치는 프로젝트\bin\Debug\net8.0

📙 5. 사용자 정의 예외

C#에서는 Exception 클래스를 상속해서 직접 예외를 만들어줄 수 있습니다.

using System;

class MyCustomException : Exception
{
    public MyCustomException(string message) : base(message) { }
}

class Program
{
    static void CheckAge(int age)
    {
        if (age < 18)
        {
            throw new MyCustomException("만 19세 미만 이상을 구매할 수 없습니다");
        }
    }

   static void Main()
    {
        try
        {
            CheckAge(15);
            Console.WriteLine("구매 가능"); // 19세 이상 일시 출력
        } 
        catch (MyCustomException e)
        {
            Console.WriteLine("사용자 정의 예외 발생:" + e.Message);
        }
    }
}

 

 

GitHub - Koras02/project

Contribute to Koras02/project development by creating an account on GitHub.

github.com

 

728x90
LIST