■ 예외(Exception) :
예외(Exception)란 프로그램의 실행 흐름을 벗어난 것으로 적절한 예외 처리(Exception Handling)를 하지 않으면 예외(Exception)에 의해서 오류(Error)가 발생 혹은 프로그램의 강제 중단이 발생하게 됩니다.
■ try ~ catch :
- 예외 처리(Exception Handling)를 할 수 있게 해주는 문법
- try :
· 정상적으로 실행될 코드
· 예외가 발생될 가능성이 있는 코드
- catch :
· 예외 발생 시 처리할 코드
· try에서 발생한 예외를 받아 처리하는 코드
· catch문은 여러 개 사용 가능하며 예외 종류를 구분하여 처리할 수 있습니다.
■ finally :
- 예외 처리(Exception Handling) 후 마지막에 실행되는 코드
- 예외의 발생 여부와 상관없이 반드시 실행되는 코드
■ Example
using System;
namespace ExceptionExample
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[3] { 0, 1, 2 };
try
{
for(int i = 0; i <= 5; i++)
Console.WriteLine($"array[{i}] = {array[i]}");
}
catch(Exception e)
{
Console.WriteLine($"[Exception] : 예외가 발생하였습니다.");
Console.WriteLine($"[Exception Message] : {e.Message}");
}
finally
{
Console.WriteLine($"[Finally] 무조건 발생");
}
}
}
}
■ 예외 필터(Exception Filter) :
- catch 블록에 제약사항을 명시하여 조건에 만족하는 예외만 받을 수 있습니다.
- catch() 뒤에 when 키워드를 사용하여 작성
■ Example
using System;
namespace ExceptionFilterExample
{
class CustomException : Exception
{
public int ErrorCode { get; set; }
}
class Program
{
static void TestMethod(int num)
{
if (num > 10)
Console.WriteLine($"[TestMethod] num은 10 보다 큽니다. (num = {num})");
else
throw new CustomException() { ErrorCode = num };
}
static void Main(string[] args)
{
try
{
TestMethod(-5);
//TestMethod(5);
}
catch(CustomException e) when (e.ErrorCode < 0)
{
Console.WriteLine($"[Exception] CustomException : ErrorCode는 음수입니다. " +
$"(ErrorCode = {e.ErrorCode})");
}
catch (CustomException e) when (e.ErrorCode >= 0)
{
Console.WriteLine($"[Exception] CustomException : ErrorCode는 양수입니다. " +
$"(ErrorCode = {e.ErrorCode})");
}
finally
{
Console.WriteLine("[Finlly] 반드시 발생하는 내용입니다.");
}
}
}
}
'개인공부 > C#' 카테고리의 다른 글
[C#] 이벤트(Event) (0) | 2023.02.14 |
---|---|
[C#] 대리자(Delegate) (0) | 2022.10.13 |
[C#] 일반화(Generalization) (0) | 2022.09.26 |
[C#] 인덱서(Indexer), IEnumerable, IEnumerator (0) | 2022.09.26 |
[C#] 컬렉션(Collection) (0) | 2022.09.23 |