C# - 예외 처리: 초보자 가이드

안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 C#의 예외 처리 세계로 다이빙할 것입니다. 프로그래밍 초보자라면 걱정하지 마세요 - 저는 여러분을 이 주제를 단계별로 안내해 드릴 것입니다. 여러 해 동안 많은 학생들을 가르친 경험을 바탕으로 말입니다. 그麼, 시작해 보겠습니다!

C# - Exception Handling

예외는 무엇인가요?

먼저, 예외가 무엇인지 이해해 보겠습니다. 케이크를 만드는 레시피를 따르고 있다고 가정해 봅시다. 모든 것이 원활하게 진행되다가, 계란이 떨어진 것을 발견했다고 치면 어떨까요? 이는 예상치 못한 상황이죠! 프로그래밍에서 이러한 예상치 못한 상황을 "예외"라고 부릅니다.

예외는 프로그램 실행 중 발생하는 오류입니다. 이는 프로그램의 정상적인 명령 흐름을 방해합니다. 하지만 걱정하지 마세요 - C#은 이러한 예외를 부드럽게 처리할 수 있는 도구를 제공해줍니다.

예외 처리의 문법

C#에서는 "try-catch" 구조를 사용하여 예외를 처리합니다. 이는 타이트로프를 걸을 때 안전망을 가지는 것과 같습니다. 기본 문법을 살펴보겠습니다:

try
{
// 예외가 발생할 수 있는 코드
}
catch (ExceptionType ex)
{
// 예외를 처리하는 코드
}
finally
{
// 예외가 발생했든 안 했든 실행되는 코드
}

이를 간단히 설명하자면:

  1. try 블록은 예외가 발생할 수 있는 코드를 포함합니다.
  2. catch 블록은 처리할 예외 유형을 지정하고, 예외를 처리하는 코드를 포함합니다.
  3. finally 블록(선택 사항)은 예외가 발생했든 안 했든 실행되는 코드를 포함합니다.

C#의 예외 클래스

C#은 다양한 내장 예외 클래스를 제공합니다. 이는 당신이 마주할 수 있는 다양한 문제 유형입니다. 다음은 일부 일반 예외 클래스입니다:

예외 클래스 설명
ArgumentException 메서드가 잘못된 인수로 호출될 때 발생
DivideByZeroException 0으로 나누려고 할 때 발생
FileNotFoundException 존재하지 않는 파일에 접근하려고 할 때 발생
IndexOutOfRangeException 배열에 잘못된 인덱스로 접근할 때 발생
NullReferenceException 초기화되지 않은 객체를 사용하려고 할 때 발생

예외 처리

이제 이를 실제로 어떻게 사용할 수 있는지 보겠습니다. 간단한 예제를 보여드리겠습니다:

try
{
int[] numbers = { 1, 2, 3 };
Console.WriteLine(numbers[10]); // 이는 예외를 발생시킵니다
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Oops! We tried to access an element that doesn't exist.");
Console.WriteLine("Error message: " + ex.Message);
}

이 예제에서, 우리는 배열의 11번째 요소에 접근하려고 시도합니다. 배열에 오직 3개의 요소만 있기 때문에 IndexOutOfRangeException가 발생합니다. catch 블록은 이 특정 예외를 처리하고 친절한 메시지를 출력합니다.

사용자 정의 예외 생성

때로는 내장 예외가 충분하지 않을 때가 있습니다. 마치 사용자 정의 케이크 레시피를 만드는 것처럼, 사용자 정의 예외를 만들 수도 있습니다! 다음은 그 방법입니다:

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

// 사용자 정의 예외 사용
try
{
throw new CakeException("The cake is a lie!");
}
catch (CakeException ex)
{
Console.WriteLine("Cake error: " + ex.Message);
}

이 예제에서, 우리는 사용자 정의 CakeException를 만들었습니다. 우리의 가상의 케이크 만들기 과정에서 문제가 발생할 때 이 예외를 발생시킬 수 있습니다!

객체를 던지기

때로는 당신 스스로 예외를 던지고 싶을 때가 있습니다. 문제를 발견했을 때 도움을 요청하는 것과 같습니다. 이를 어떻게 할 수 있는지 보겠습니다:

public void CheckAge(int age)
{
if (age < 0)
{
throw new ArgumentException("Age cannot be negative!");
}
Console.WriteLine("Age is valid.");
}

// 메서드 사용
try
{
CheckAge(-5);
}
catch (ArgumentException ex)
{
Console.WriteLine("Invalid age: " + ex.Message);
}

이 예제에서, 누군가 음수 연령을 설정하려고 시도할 때 ArgumentException를 던집니다. catch 블록은 이 예외를 처리합니다.

결론

그렇습니다! 우리는 C#의 예외 처리 기본 사항을 다루었습니다. 예외는 코드의 작은 문제점입니다. 이를 적절히 처리하면 프로그램을 더 견고하고 사용자 친화적으로 만들 수 있습니다.

프로그래밍 여정을 계속하면서 많은 예외를 마주하게 될 것입니다. 두려워 말아세요! 각 예외는 학습하고 코드를 개선할 기회입니다. 행복하게 코딩하시고, 예외가 항상 부드럽게 처리되기를 바랍니다!

Credits: Image by storyset