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
'게임 모딩 > C#' 카테고리의 다른 글
[C#] 13장 C# 람다식과 Func (0) | 2025.08.24 |
---|---|
[C#] 12장 C# 델리게이트와 이벤트 (0) | 2025.08.20 |
[C#] 10장. C# 패턴일치 (0) | 2025.02.26 |
[C#] 9장, C# 개체 지향 프로그래밍(OOP) (0) | 2025.02.24 |
[C#] 8.C#의 네임스페이스, 클래스, 레코드, 인터페이스, 제네릭, 익명 형식 (0) | 2025.02.03 |