방법: Visual Basic에서 예외 catch

이 예제에서는 Try 및 Catch 블록을 사용하여 예외를 catch하는 방법을 보여 줍니다.

예제

이 예제에서는 Try…Catch 블록을 사용하여 OverflowException을 catch하는 방법을 보여 줍니다.

이 코드 예제는 IntelliSense 코드 조각으로도 사용할 수 있습니다. 이 코드 조각은 코드 조각 선택기의 Visual Basic 언어에 있습니다. 자세한 내용은 방법: IntelliSense 코드 조각 삽입을 참조하십시오.

Dim Top As Double = 5
Dim Bottom As Double = 0
Dim Result As Integer
Try
    Result = CType(Top / Bottom, Integer)
Catch Exc As System.OverflowException
    MsgBox("Attempt to divide by zero resulted in overflow")
End Try

이 예제에는 다음 사항이 필요합니다.

  • System 네임스페이스에 대한 참조

다음 코드 예제에서는 ExceptionIOExceptionIOException에서 파생된 모든 예외를 처리하는 Try...Catch 블록을 구현합니다.

Try
    ' Add code for your I/O task here. 
Catch dirNotFound As System.IO.DirectoryNotFoundException
    Throw dirNotFound
Catch fileNotFound As System.IO.FileNotFoundException
    Throw fileNotFound
Catch pathTooLong As System.IO.PathTooLongException
    Throw pathTooLong
Catch ioEx As System.IO.IOException
    Throw ioEx
Catch security As System.Security.SecurityException
    Throw security
Catch ex As Exception
    Throw ex
Finally
    ' Dispose of any resources you used or opened in the Try block. 
End Try

실행할 코드를 Try 블록에 추가합니다.

강력한 프로그래밍

이 코드 블록을 기초로 사용하여 Try...Catch 문에서 데이터 작업을 래핑할 수 있습니다. 이 Try...Catch 블록은 모든 예외를 catch하고 다시 throw하도록 디자인되었습니다. 프로젝트에 따라 이 블록이 적합하지 않을 수도 있습니다. 예외 처리 옵션에 대한 자세한 내용은 IntelliSense 코드 조각 사용에 관한 최선의 방법을 참조하십시오.

사용자가 올바른 파일 이름만 선택하도록 제한하는 OpenFileDialog 구성 요소(Windows Forms)SaveFileDialog 구성 요소(Windows Forms) 컨트롤 등의 Windows Forms 컨트롤을 사용하여 예외가 발생할 가능성을 줄일 수 있습니다. FileInfo.Exists 속성으로 파일을 열기 전에 해당 파일이 있는지 여부를 확인할 수 있습니다. 그러나 이러한 컨트롤과 클래스를 사용하는 것이 아주 쉽지만은 않습니다. 사용자가 파일을 선택한 후부터 코드가 실행되기 전까지의 시간 동안 파일 시스템이 변경될 수도 있기 때문입니다. 따라서 파일 관련 작업에는 거의 항상 예외 처리가 필요합니다.

보안

대부분의 파일 작업에서 어셈블리에는 FileIOPermission 클래스에서 부여한 권한 수준이 필요합니다. 부분 신뢰 컨텍스트에서 실행 중인 경우에는 불충분한 권한 때문에 코드에서 예외를 throw할 수 있습니다. 자세한 내용은 코드 액세스 보안 기본 사항을 참조하십시오. 파일이 있는 경우 해당 파일에 대한 액세스 권한도 사용자에게 있어야 합니다. 자세한 내용은 ACL 기술 개요를 참조하십시오.

파일 확장명을 바탕으로 파일 내용을 판단하면 안 됩니다. 예를 들어, Form1.vb 파일이 Visual Basic 소스 파일이 아닐 수도 있습니다.

참고 항목

작업

방법: Visual Basic에서 예외 throw

방법: Visual Basic에서 Try...Catch 블록을 사용하여 코드 테스트

방법: Visual Basic에서 Try…Finally 블록을 사용하여 리소스 정리

방법: Visual Basic에서 Catch 블록의 오류 필터링

방법: 예외의 내부 예외 검사(Visual Basic)

예외 처리 문제 해결(Visual Basic)

개념

구조적 및 비구조적 예외 처리를 사용하는 시기 선택(Visual Basic)