HOWTO: Visual Basic .NET에서 예외 잡기

기술 자료 번역 기술 자료 번역
기술 자료: 301283 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR301283
모두 확대 | 모두 축소

이 페이지에서

요약

예외를 잡아 처리하는 작업은 표준 프로그래밍 작업입니다. 이 문서에서는 try-catch-finally 블록을 사용하여 예외를 잡는 방법을 보여줍니다. try-catch-finally 블록은 예외가 발생할 가능성이 있는 코드 주변에 배치하는 "래퍼(wrapper)"입니다.

try-catch-finally 블록은 다음과 같이 구성되어 있습니다.
  • 예외를 발생시킬 수 있는 코드는 try 블록 내부에 배치합니다.
  • 예외가 발생하는 경우 catch 블록이 삽입되고, 프로그램이 적절한 작업을 수행하여 복구하거나 사용자에게 경고할 수 있습니다.
  • finally 블록 내의 코드는 예외가 발생한 후에도 항상 실행되며 정리 작업을 수행할 수 있습니다. finally 블록은 생략할 수 있습니다.

요구 사항

다음은 권장 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩 목록입니다.

  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server 또는 Windows NT 4.0 Server
  • Microsoft Visual Basic .NET

Visual Basic .NET에서 예외를 잡는 방법

  1. 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 k = i/j ' Error on this line.
  3. F5 키를 눌러 예외를 봅니다.
  4. 코드를 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 k = i/j ' Error on this line. Control jumps to the catch block.
    Catch
    	Console.WriteLine("An error occurred.")
    End Try
  5. Ctrl+F5를 눌러 프로젝트를 실행합니다. catch 블록의 오류 메시지가 표시됩니다.
  6. 오류에 관계 없이 정리 작업이나 프로세스 사후 작업을 수행해야 할 경우에는 try-catch-finally 문의 finally 부분을 사용합니다. finally 부분에 있는 코드는 예외가 발생하는 것에 상관 없이 항상 실행됩니다. 오류가 발생하지 않더라도 다음 코드 "This statement is always printed"는 콘솔에 표시됩니다. 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 k = 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+F5를 눌러 프로젝트를 실행합니다.
  8. catch 문과 함께 Exception 개체를 사용하면 예외에 대한 세부 정보를 검색할 수 있습니다. Exception에는 예외에 대한 도움말, 출처 또는 스택 정보를 식별하는데 유용한 속성이 많이 있습니다. 이러한 정보는 예외의 원인을 추적하고 출처에 대한 자세한 설명을 얻는 데 매우 유용할 수 있습니다. 다음 예제 코드는 예외를 잡고 특정 오류 메시지를 표시하도록 합니다. 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 k = 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 k = 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. 지금까지 일반적인 예외에 대한 예제를 수행하였습니다. 그러나 어떤 종류의 예외가 발생할 것인지 미리 알 수 있다면 예상되는 예외를 잡아서 적절히 처리할 수 있습니다. 그런 다음 다른 모든 예외도 잡아서 처리할 수 있습니다. 다음 예제에서는 이러한 작업을 보여줍니다.
    ' We are going to 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
    컴퓨터 구성이 다를 수도 있기 때문에 이 단계의 예제가 예외를 발생시킬 수도 있고 발생시키지 못할 수도 있습니다. IO 예외를 강제로 발생시키려면 파일 경로를 해당 컴퓨터에 존재하지 않는 폴더로 변경합니다.

참조

자세한 내용은 Microsoft .NET Framework Software Development Kit(SDK)를 참조하십시오.

속성

기술 자료: 301283 - 마지막 검토: 2002년 1월 15일 화요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Basic .NET 2002 Standard Edition
키워드:?
kbhowto kbhowtomaster KB301283

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com