c# exception 예제

c# exception 예제

예외를 throw할 수 있는 문 주위에 try 블록을 사용합니다. 공용 및 보호된 메서드는 의도한 함수를 완료할 수 없을 때마다 예외를 throw해야 합니다. throw되는 예외 클래스는 오류 조건에 맞는 가장 구체적인 예외여야 합니다. 이러한 예외는 클래스 기능의 일부로 문서화되어야 하며 원래 클래스에 대한 파생 클래스 또는 업데이트는 이전 버전과의 호환성을 위해 동일한 동작을 유지해야 합니다. 이전 섹션에서는 프로그램에 오류가 있는 경우 CLR 또는 프로그램 코드에서 예외가 throw되는 것을 보았습니다. 이러한 예외는 프로그램의 충돌을 방지하기 위해 처리되어야 합니다. C#은 try, catch 및 finally 블록을 사용하여 예외를 처리하는 기본 제공 지원을 제공합니다. try 블록은 C# 프로그래머가 예외의 영향을 받을 수 있는 코드를 분할하는 데 사용됩니다. 연결된 catch 블록은 결과 예외를 처리하는 데 사용됩니다.

finally 블록에는 try 블록에 할당된 리소스를 해제하는 등 try 블록에 예외가 throw되는지 여부에 관계없이 실행되는 코드가 포함되어 있습니다. 시도 블록에는 하나 이상의 연결된 catch 블록 또는 finally 블록 또는 둘 다가 필요합니다. 예외에는 StackTrace라는 속성이 포함됩니다. 이 문자열에는 현재 호출 스택의 메서드 이름과 각 메서드에 대해 예외가 throw된 파일 이름 및 줄 번호가 포함됩니다. StackTrace 개체는 throw 문의 지점에서 공통 언어 런타임(CLR)에 의해 자동으로 만들어지므로 스택 추적이 시작되는 지점에서 예외를 throw해야 합니다. try – try 블록은 특정 예외가 활성화되는 코드 블록을 식별합니다. 그 다음에 하나 이상의 캐치 블록이 있습니다. 예외 클래스의 속성: 예외 클래스에는 예외 동안 예외에 대한 정보를 얻을 수 있도록 하는 많은 속성이 있습니다. 이 상황을 처리하는 한 가지 방법은 예금 거래에 의해 throw 된 예외를 catch하고 인출을 롤백하는 것입니다.

사용자 고유의 예외를 정의할 수도 있습니다. 사용자 정의 예외 클래스는 Exception 클래스에서 파생됩니다. 다음 예제는 이것을 보여 준다 – try 블록 내에서 제기 된 예외는 위의 예와 같이 캐치 블록을 사용하여 처리 될 수있다. catch 블록의 코드는 예외가 발생할 때만 실행됩니다. 도메인이 공통 응용 프로그램 기반을 공유하지 않는 경우 강력한 이름의 예외 정보가 포함된 어셈블리에 서명하고 어셈블리를 전역 어셈블리 캐시에 배포합니다. throw – 문제가 나타나면 프로그램이 예외를 throw합니다. throw 키워드를 사용하여 수행됩니다. 이러한 오류 처리 블록은 try, catch 및 finally 키워드를 사용하여 구현됩니다. 다음은 제로 조건으로 나눌 때 예외를 던지는 예입니다 – 클래스는 예외를 트리거 할 호출을 하지 않도록 할 수있는 방법이나 속성을 제공 할 수 있습니다. 예를 들어 FileStream 클래스는 파일의 끝에 도달했는지 여부를 확인하는 데 도움이 되는 메서드를 제공합니다. 파일끝을 지나서 읽는 경우 throw되는 예외를 피하기 위해 사용할 수 있습니다.

다음 예제에서는 예외를 트리거하지 않고 파일끝까지 읽는 방법을 보여 주며, 새 속성은 제공 하는 데이터가 예외를 해결 하는 데 유용한 경우에만 예외 클래스에 추가 해야 합니다. 파생된 예외 클래스에 새 속성이 추가된 경우 ToString()을 재정의하여 추가된 정보를 반환해야 합니다. 사용자가 보는 오류 메시지는 예외 클래스의 이름이 아니라 throw된 예외의 Exception.Message 속성에서 파생됩니다. 일반적으로 예외 생성자의 메시지 인수에 메시지 문자열을 전달 하 여 Exception.Message 속성에 값을 할당 합니다. 디버그 모드에서 throw할 수 있지만 릴리스 모드에서는 사용할 수 없는 예외를 만들지 마십시오. 개발 단계에서 런타임 오류를 식별하려면 디버그 어설션을 대신 사용합니다. 위의 방법은 직접 예외를 throw하지 않지만 입금 작업이 실패하면 인출이 취소되도록 방어적으로 작성해야합니다.

Share this post