예외(Exception)는 프로그램의 한 부분에서 다른 부분으로 제어 흐름을 전달하는 메커니즘입니다. C#의 예외 처리는 try, catch, finally, throw라는 네 가지 핵심 키워드를 기반으로 동작합니다.
C# 예외 처리의 4가지 핵심 키워드
try − try 블록은 예외가 발생할 가능성이 있는 코드 영역을 지정합니다. try 블록 뒤에는 반드시 하나 이상의 catch 블록이 따라와야 합니다.
catch − 프로그램 내에서 문제를 처리하고자 하는 위치에 예외 핸들러(exception handler)를 배치하여 예외를 잡아냅니다. catch 키워드는 예외를 포착하는 역할을 담당합니다.
finally − finally 블록은 예외 발생 여부와 관계없이 항상 실행되는 코드를 담습니다. 주로 파일 닫기, 연결 해제 등 리소스 정리 작업에 활용됩니다.
throw − throw 키워드는 예외가 발생했을 때 이를 던져(발생시켜) 호출 스택 상위로 전달하는 역할을 합니다.
try, catch, finally 사용 예제
다음 예제는 C#에서 try, catch, finally 블록을 함께 사용하여 나누기 연산 중 발생할 수 있는 오류를 처리하는 방법을 보여줍니다.
using System;
namespace Demo {
class DivNumbers {
int result;
DivNumbers() {
result = 0;
}
public void division(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.division(25, 0);
Console.ReadKey();
}
}
}
실행 결과
Result: 0
위 예제에서는 0으로 나누기를 시도하기 때문에 DivideByZeroException이 발생합니다. catch 블록이 이 예외를 잡아 오류 정보를 출력하고, 이후 finally 블록이 실행되어 계산된 결과값을 화면에 표시합니다. 이처럼 try-catch-finally 구조를 활용하면 프로그램이 비정상적으로 종료되는 것을 방지하고 안정성을 크게 높일 수 있습니다.