- Exception(예외 처리)
- Exception : Application이 실행중일 때 발생하는 오류를 처리하는 것
- .NET에서 제공하는 구조화된 예외처리 방법
- .NET에서 exception은 하나의 object
- exception은 어떤 비정상적인 error 상황이 발생되었을 때, 그 문제에 대한 정보를 제공하는 객체
- system이나 사용자가 정의한 모든 exception은 System.Exception에서 파생된 것
- System.Exception class member property
- HelpLink
- 현재 예외와 관련된 도움말 파일에 대한 링크를 설정하거나 리턴
- Message
- 현재 발생한 Exception을 설명하는 text를 리턴
- Source
- Exception을 발생시킨 application이나 객체 이름을 설정하거나 리턴
- StackTrace
- Exception을 발생한 method의 stack 상세 정보를 리턴
- TargetSite
- Exception을 발생시킨 method name을 리턴
- InnerException
- 현재 예외를 발생시키는 Exception의 인스턴스를 리턴
- HelpLink
- try, catch, finnaly 개요
- try : 프로그램이 수행되는 일반적인 코드
- catch : exception 발생시 처리하는 코드
- finally : 리소스를 해제하는 것과 같이 exception 발생 유무를 떠나 수행되어야 하는 코드
|
- catch
- 중첩된 exception 처리기를 지정할 수 있다.
- 이때 지정된 순서대로 exception 처리기를 찾아 자신에 알맞는 처리기를 수행하고 더이상의 처리기를 찾지 않는다.
- 때문에 catch를 다중으로 정의할 때, 상세한 것을 처리하는 처리기를 먼저 지정하고, 보다 일반적인 처리기는 뒤에 지정한다.
catch(IndexOutofRangeException e){
// 배열 첨자가 넘어섰을 때 Exception 처리
}
catch(FormatException e){
// 형변환 오류시 Exception 처리
}
catch(Exception e){
// 일반 예외 처리
}
catch{
// C++ 등 Exception이 관리되지 않는 라이브러리에서 발생된 것 처리
}
- 중첩된 try catch finally 구문
try{
// A : F, G 수행
try{
// B -> 안쪽 Catch에서 exception 처리기를 찾아 실행, 안쪽에 처리기가 없다면 안쪽 finally를 수행하고,
바깥쪽 catch에서 exception 처리기를 찾음. 이 때, E부분은 수행되지 않음.
}
catch(FormatException e){
// C -> 안쪽 finally를 수행하고, 바깥쪽 catch에서 exception 처리기를 찾음. 이 때, E 부분은 수행되지 않음.
}
finally{
// D -> 바깥쪽 catch 에서 exception 처리기를 찾음. 이 때, E 부분은 수행되지 않음
}
// E : F, G 수행
}
catch(Exception e){ // F 예외처리 }
finally{ // G 정리작업 }
- custom exception
- 별도의 class에 처리되기 원하는 예외 상황에 대한 상세하게 캡슐화하는 것
- System.Exception class에서 파생
- custom exception class내에 catch 블록에서 사용할 member field나 method를 정의하거나 overridding
- 단순히 base class의 member를 호출하여 정의할 수도 있음
- throw exception
- 코드가 실행중일 때 일정한 조건을 충족하지 않는 경우에 throw 문을 통해 원하는 타입의 예외를 발생시킬 수 있다.
- throw 키워드 뒤에 해당하는 exception의 instance를 생성하면 된다.
throw new IndexOutOfRangeException("배열 첨자가 잘못되었습니다.");
출 처 : (주) 인터데브 솔루션 개발 사업부 박준호님 C# 동영상 강좌
'프로그램&DB > C#' 카테고리의 다른 글
박준호님의 C# 강좌 - Preprocessor Directive(전처리기 지시문) (0) | 2009.04.14 |
---|---|
박준호님의 C# 강좌 - C# 객체 소멸과 Garbage Collection (0) | 2009.04.14 |
박준호님의 C# 강좌 - 이벤트(Event) (0) | 2009.04.14 |
박준호님의 C# 강좌 - Delegate (0) | 2009.04.14 |
박준호님의 C# 강좌 - Collection / ArrayList / HashTable (0) | 2009.04.14 |