본문 바로가기
C# 공부

exception

by Dev_Hugh 2021. 8. 25.
728x90
반응형

Study about exception

  • 자세한 내용은 C++ 카테고리 exception 참고
  • 프로그래머가 생각하는 시나리오에서 벗어나는 사건
  • 발생할 예외를 처리하지 않으면 CLR이 처리하여 에러를 알러준다.

try~catch 와 finally

try
{
    // dbconn 은 데이터베이스 커넥션
    dbconn.Open();
    // ...
    // deconn.Close(); // 버그 일으킬 가능성 높음
}
catch (DataToBase_Exception e)
{
    //...
}
catch (Data_Exception e)
{
    //...
}
finally
{
    deconn.Close(); // 여기서 닫아주기
}
  • 예외가 try 블록의 중요 코드 실행을 못하게 한다면 try블록의 끝에 데이터베이스의 커넥션을 닫는 코드

사용자 정의 예외 클래스 만들기

  • Exception 클래스를 상속해서 만든다.
  • 특별한 데이터를 담아서 예외 처리 루틴에 추가 정보제공하거나 예외 상황을 더 잘 설명하고 싶을때 만든다.

예외 필터링

class FilterableException : Exception
{
    public int ErrorNo { get; set; }
}
try
{
    int num = GetNumber();
    if(num < 0 || num > 10)
    {
        throw new FilterableException() { ErrorNo = num };
    }
    else
    {
        Console.WirteLine($"Output: {num}");
    }
}
catch (FilterableException e) when (e.ErrorNo < 0)
{
    Console.WriteLine("Negative input is not allowed!");
}
  • catch절이 처리할 예외 객체에 제약 사항을 명시하여 조건을 만족하는 예외 객체만 예외 처리 코드 실행
  • catch() 문 뒤에 when 키워드 사용
728x90
반응형

'C# 공부' 카테고리의 다른 글

property  (0) 2021.08.25
generic  (0) 2021.08.25
interface  (0) 2021.08.25
tuple  (0) 2021.08.22
static  (0) 2021.08.22