Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 예외 처리(Exception Handling)란? try·catch·finally·throw 핵심 정리

예외(Exception)란 프로그램이 실행되는 도중에 발생하는 문제 상황을 의미합니다. 예를 들어 존재하지 않는 파일을 열거나, 0으로 숫자를 나누려 할 때 예외가 발생할 수 있습니다. C#에서는 이러한 예외를 try, catch, finally, throw 네 가지 키워드로 처리하며, 각 키워드의 역할은 다음과 같습니다.

try – 예외 감시 블록

try 블록은 예외가 발생할 가능성이 있는 코드를 감싸는 영역입니다. 이 블록 안에서 특정 예외가 활성화되면, 해당 예외는 곧바로 catch 블록으로 전달됩니다.

catch – 예외 포착

catch 키워드는 발생한 예외를 잡아내어(포착하여) 처리하는 역할을 합니다. 예외 유형별로 여러 개의 catch 블록을 두어 상황에 맞는 대응 로직을 작성할 수 있습니다.

finally – 반드시 실행되는 블록

finally 블록에는 예외가 발생했든 발생하지 않았든 항상 실행되어야 하는 문장들을 작성합니다. 주로 파일 닫기, 리소스 해제 등 마무리 작업에 사용됩니다.

throw – 예외 던지기

throw는 프로그램 실행 중 문제가 나타났을 때 예외를 발생(던지기)시키는 데 사용됩니다. 직접 만든 조건에서 예외를 강제로 발생시켜 호출자에게 알릴 수도 있습니다.

C# 예외 처리 예제 코드

다음은 C# 프로그램에서 오류를 처리하는 방법을 보여주는 예제입니다. 0으로 나누기를 시도하면 DivideByZeroException이 발생하고, 이를 catch 블록에서 처리합니다.

using System;

namespace MyErrorHandlingApplication {

    class DivNumbers {
        int result;

        DivNumbers() {
            result = 0;
        }
        public void myDivision(int num1, int num2) {
            try {
                result = num1 / num2;
            } catch (DivideByZeroException e) {
                Console.WriteLine("Exception Caught: {0}", e);
            } finally {
                Console.WriteLine("Result: {0}", result);
            }
        }

        static void Main(string[] args) {
            DivNumbers d = new DivNumbers();
            d.myDivision(5, 0);
            Console.ReadKey();
        }
    }
}

위 코드에서 d.myDivision(5, 0)이 호출되면 분모가 0이므로 try 블록 안에서 DivideByZeroException이 발생합니다. 이 예외는 catch 블록에서 잡혀 메시지가 출력되고, 예외 발생 여부와 무관하게 finally 블록의 결과 출력문이 마지막으로 실행됩니다.

정리

C#의 예외 처리 구조는 try(감시) → catch(처리) → finally(마무리) 흐름으로 이해하면 쉽습니다. throw를 활용하면 개발자가 원하는 시점에 예외를 발생시킬 수 있어, 더 견고하고 안정적인 프로그램을 작성할 수 있습니다.