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
반응형