Visual Basic.NET 또는 Visual Basic 2005에서 예외를 catch 하는 방법

이 문서의 Microsoft Visual C#.NET 및 Microsoft Visual C# 2005 버전에서는 308345 를 참조 하십시오.


이 문서의 Microsoft Visual Basic 6.0 버전 191474 를 참조 하십시오.

요약

Catch 할 예외 처리 및 표준 프로그래밍 작업입니다. 이 문서는 try-catch-finally 블록을 사용 하 여 예외를 catch 하는 방법을 보여 줍니다. Try-catch-finally 블록은 예외가 발생할 가능성이 있는 코드에 보관 하는 "래퍼"입니다.

Try-catch-finally 블록 다음 섹션으로 구성 됩니다.
  • 예외가 throw 될 수 있는 모든 코드는 try 블록 내에 배치 됩니다.
  • 예외가 throw 되 면 catch 블록을 입력 하 고 프로그램을 복구 하거나 사용자에 게 경고할 수 적절 한 작업을 수행할 수 있습니다.
  • Finally 블록의 코드에도 항상 실행 되며 예외 발생 후 정리를 수행할 수 있습니다. Finally 블록은 선택 사항입니다.

요구 사항

다음은 권장된 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩입니다.
  • 고급 서버, Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 또는 Microsoft Windows NT 4.0 서버
  • Microsoft Visual Basic 2005 또는 Microsoft Visual Basic.NET

단계별 예제

  1. Visual Basic 2005 또는 Visual Basic.NET에서 새 콘솔 응용 프로그램을 만듭니다.
  2. Sub Main 프로시저에 다음에 나오는 코드 예제를 삽입 합니다. 샘플 선언 하 고 하는데 "k"를 초기화 하면 오류가 발생 하는 세 개의 변수를 초기화 합니다.
    ' This code generates an exception.Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line.

  3. 예외를 보려면 F5 키를 누릅니다.
  4. 캡처할 오류 코드는 try-catch 문에 배치 합니다. 다음 코드는 코드에서 throw 되 고 일반 오류 메시지를 표시 하는 모든 오류를 catch 합니다. Sub Main 프로시저의에서 코드를 다음 코드로 바꿉니다.
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.
    Catch
    Console.WriteLine("An error occurred.")
    End Try
  5. 프로젝트를 실행 하려면 CTRL + f 5를 누릅니다. Catch 블록에서 오류 메시지가 표시 됩니다.
  6. 일부 정리 또는 사후 처리 오류에 관계 없이 수행 하면, try-catch-마지막 문의 마지막 부분에서는 예외 없이 코드 문의 마지막 부분에서 항상, 실행 됩니다. 다음 코드에서는 오류가 발생 하지 않은 경우에 "이이 문은 항상 인쇄" 콘솔에 표시 합니다. Sub Main 코드를 다음 코드로 대체 합니다.
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.

    Catch
    Console.WriteLine("An error occurred.")
    Finally ' This section is performed regardless of the above processing.
    Console.WriteLine()
    Console.WriteLine("This statement is always printed")
    End Try

  7. 프로젝트를 실행 하려면 CTRL + f 5를 누릅니다.
  8. Catch 문을 사용 하 여 예외에 대 한 정보를 검색 하는 예외 개체를 사용할 수 있습니다. 예외에 도움말, 소스 또는 예외가 짝수 스택 정보를 식별 하는 데 도움이 되는 속성이 많이 있습니다. 이 정보는 원래 예외의 원인을 아래로 추적 또는 원본에 대 한 더 나은 설명을 제공 하는 매우 유용할 수 있습니다. 다음 예제는 예외를 잡고 특정 오류 메시지. 로 이전에 Sub Main 프로시저에 코드를 다음 코드로 바꿀 수 있습니다.

    예제 1
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.

    Catch e As Exception ' Perform code that deals with the exception
    ' or informs the user what occurred.
    Console.WriteLine("The following error occurred:")
    Console.WriteLine(e.ToString()) ' Print the error message to the user.

    Finally ' This section is performed regardless of the above processing.
    Console.WriteLine()
    Console.WriteLine("This statement is always printed")
    End Try

    예제 2
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.

    Catch e As Exception ' Perform code that deals with the exception
    ' or informs the user what occurred.
    Console.WriteLine("The following error occurred:")
    Console.WriteLine( e.Message ) ' Print the error message.
    Console.WriteLine( e.Source ) ' Name of application or object
    ' that caused the error
    Console.WriteLine( e.StackTrace ) ' String that contains the stack
    ' trace for this exception
    Finally ' This section is performed regardless of the above processing.
    Console.WriteLine()
    Console.WriteLine("This statement is always printed")
    End Try

  9. 이 지금까지 아닌 특정 예외 특정 케이스를 해결 했다는. 그러나 어떤 종류의 예외가 발생할 것인지 미리 알고, 예상 되는 예외를 catch를 잡아서 적절히 처리할 수 있습니다. 다른 모든 예외를 catch 하 고 이들을 처리 여러 Catch 블록을 사용할 수 있습니다. 다음 샘플에서는이 보여 줍니다.
    Module Module1Sub Main()

    ' Attempt to do some file processing.
    ' This can cause a number of potential exceptions.
    ' Note that you can use the specific exceptions to get extra information about that exception,
    ' but this example focuses on showing control execution for those exceptions.

    Try
    File.Create("c:/temp/test.txt") ' Can fail for a number of reasons

    Catch ioe As System.IO.IOException ' This error may occur if the Temp folder does not exist.
    Console.WriteLine("An IO error occurred. The c:\temp folder does not exist")

    Catch se As System.Security.SecurityException ' You do not have the appropriate permission
    ' to take this action.
    Console.WriteLine("You don't have the security permissions to take this action!")

    Catch e As Exception ' Catch all other exceptions.
    Console.WriteLine( e.ToString() ) ' Print the standard exception information.
    End Try
    End Sub
    End Module
    컴퓨터 구성을 다를 수 있습니다, 때문에이 단계에서는 샘플 수도 있고 예외를 throw 하지 않을 수 있습니다. IO 예외를 강제로 원하는 경우 사용자의 컴퓨터에 존재 하지 않는 폴더에 파일 경로 변경 합니다.

참조

자세한 내용은 Microsoft.NET Framework 소프트웨어 개발 키트 (SDK)를 참조 하십시오.
속성

문서 ID: 301283 - 마지막 검토: 2017. 2. 6. - 수정: 2

피드백