Visual Basic 구조적된 예외 처리 사용 방법에 설명 합니다.NET 또는 Visual Basic 2005

기술 자료 번역 기술 자료 번역
기술 자료: 315965 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 구조적된 예외 처리에서 Visual Basic 사용 하는 방법을 보여 줍니다.Visual Basic 2005에서 NET 또는.

요구 사항

다음은 권장된 하드웨어, 소프트웨어, 네트워크 인프라 및 필요한 서비스 팩 설명 합니다.
  • Visual Basic.NET 또는 Visual Basic 2005
이 문서에서는 사용자가 다음 내용을 잘 알고 있다고 가정 합니다.
  • Visual Basic.NET 또는 Visual Basic 2005
  • Microsoft Visual Studio.NET 또는 Microsoft Visual Studio 2005

구조적된 예외 처리

Visual Basic.NET 또는 Visual Basic 2005에서 이전 버전의 Microsoft Visual Basic 사용할 수 있는 "On Error Goto" 오류를 처리 하는 강력 하 고 쉬운 대안을 제공 하는 구조화 된 예외 처리를 제공 합니다. 구조적된 예외 처리는 오류 처리기 안에 다른 오류 처리기 같은 프로시저 내에서 중첩 될 수 있으므로 보다 강력한입니다. 또한 에는 블록 구문이 구조적된 예외 처리를 사용 하는 경우...다른...End If 문. 이 Visual Basic 있습니다.더욱 쉽게 읽고 유지의 NET 및 Visual Basic 2005 코드입니다.

참고: Visual Basic.NET 또는 Visual Basic 2005 "On Error Goto" 구문은 이전 버전과 호환성을 유지합니다. Visual Basic이 구문을 계속 사용할 수 있습니다.NET 또는 Visual Basic 2005 코드입니다. 그러나, 구조적된 예외 처리 및 On Error 문을 같은 프로시저 내에서 결합할 수 없습니다. 구조적 예외 처리를 사용 하는 것이 좋습니다 새 코드를 작성할 때

구조화 된 오류 처리의 기본 구문은 다음과 같습니다.
Try
   'Code that may raise an error.
Catch
   'Code to handle the error.
Finally
   'Code to do any final clean up.
End Try
				
TryEnd Try 문이 필요합니다. 둘 중 하나를 코드에 포함 되어야 하지만 CatchFinally 문을 필요 하지 않습니다. 각 Catch 블록이 특정 오류를 처리 하는 Catch 문을 여러 개 지정할 수도 있습니다.

예외를 catch 합니다.

  1. Visual Studio 시작 합니다.NET 또는 Visual Studio 2005.
  2. Visual Basic 새 콘솔 응용 프로그램 프로젝트를 만듭니다.Visual Basic 2005에서 NET 또는.
  3. Sub Main 프로시저에 다음 코드를 추가 합니다.
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try
    					
  4. 디버그 메뉴에서 응용 프로그램을 실행 하려면 시작 을 클릭 합니다. 코드가 숫자를 0으로 나누려고 시도 합니다. 이 0으로 예외 나누기를 일으키는 잘못 된 작업입니다. 다행히 Catch 블록이이 오류를 catch 하 고 콘솔 창에 다음 오류 메시지가 표시 됩니다.
    A run-time error has occurred
    						
  5. 콘솔 창을 닫습니다.

여러 예외 알리기

이 섹션에서는 Catch 문을 여러 개를 사용 하 여 여러 오류를 처리 하는 방법을 보여 줍니다.
  1. 이전 섹션에서 만든 콘솔 응용 프로그램 프로젝트를 엽니다.
  2. Sub Main 프로시저에서 이전 섹션에 다음 코드를 복사 하는 코드를 바꿉니다.
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0
    
    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Finally
      Console.ReadLine()
    End Try
    						
    이 코드는 두 개의 Catch 블록 포함: 이전 나누기 0 오류를 catch 하 고 하나 새로운 오버플로 오류를 catch 합니다.
  3. 디버그 메뉴에서 응용 프로그램을 실행 하려면 시작 을 클릭 합니다. 콘솔 창에 다음 오류 메시지가 표시 됩니다.
    Error: Overflow
    						
  4. 콘솔 창을 닫습니다.
  5. 발생할 수 있는 모든 오류를 항상 예측할 수 없습니다 때문에 예기치 않은 예외를 모두 Catch 블록을 추가할 수 있습니다. 예를 들어, 예기치 않은 오류를 catch 하 고 적절 한 오류 메시지를 표시 하려면 Finally 문 앞에 다음 코드를 추가 합니다.
    Catch exc As Exception
    Console.WriteLine("Error: " & exc.Message)
    					
  6. 파일 메뉴에서 솔루션 닫기를 클릭 합니다.

예외를 throw 합니다.

구조적된 예외 처리 예외를 catch 하는 Catch 문을 사용 합니다. 또한 구조적된 예외 처리 예외를 throw 하는 방법을 제공 합니다. 예를 들어, 비즈니스 규칙이 위반 되 면 오류가 throw 할 수 있으므로 안에 속성 Set 프로시저 데이터 유효성 검사를 수행할 때 예외를 throw 하는 것이 유용 합니다.
  1. Visual Studio 시작 합니다.NET 또는 Visual Studio 2005.
  2. Visual Basic 새 콘솔 응용 프로그램 프로젝트를 만듭니다.Visual Basic 2005에서 NET 또는.
  3. 프로젝트 메뉴에서 클래스 추가클릭 합니다.
  4. 새 항목 추가 창에서 입력 합니다. clsPerson.vb이름 텍스트에서 상자 및 다음 확인을 클릭 합니다.
  5. 공용 클래스 clsPerson 안에 다음 코드를 추가...클래스 종료 문을:
    Private mintAge As Integer
    
    Public Property Age() As Integer
      Get
        Age = mintAge
      End Get
      Set(ByVal Value As Integer)
        If Value >= 0 Then
          mintAge = Value
        Else
          Throw New ArgumentException ("Age cannot be negative")
        End If
      End Set
    End Property
    						
    이 코드는 Age 속성을 만듭니다. 사람의 나이가 음수일 수는 없으므로 클래스 사용자 사용 기간 을 0 보다 작은 숫자를 설정 하려고 하면 오류가 발생 합니다.
  6. Module1.vb의 Sub Main 프로시저에서 다음 코드를 추가 합니다.
    Dim p As New clsPerson()
    
    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
    					
  7. 디버그 메뉴에서 응용 프로그램을 실행 하려면 시작 을 클릭 합니다. 콘솔 창에 다음 오류 메시지가 표시 됩니다.
    Age cannot be negative
    						
  8. 콘솔 창을 닫습니다.

전체 코드 예제

예외를 catch 합니다.

Module Module1

  Sub Main()
    Dim a As Integer = 0
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a = b \ c
    Catch exc As Exception
      Console.WriteLine("A run-time error occurred")
    Finally
      Console.ReadLine()
    End Try

  End Sub

End Module
				

여러 예외 알리기

Module Module1

  Sub Main()
    Dim a As Integer = 2147483647
    Dim b As Integer = 0
    Dim c As Integer = 0

    Try
      a += 1
    Catch exc As DivideByZeroException
      Console.WriteLine("Error: Divide by zero")
    Catch exc As OverflowException
      Console.WriteLine("Error: Overflow")
    Catch exc As Exception
      Console.WriteLine("Error: " & exc.Message)
    Finally
      Console.ReadLine()
    End Try


  End Sub

End Module
				

예외를 throw 합니다.

Module Module1

  Sub Main()
    Dim p As New clsPerson()

    Try
      p.Age = -1
    Catch exc As Exception
      Console.WriteLine(exc.Message)
    Finally
      Console.ReadLine()
    End Try
  End Sub

End Module

Public Class clsPerson

  Private mintAge As Integer

  Public Property Age() As Integer
    Get
      Age = mintAge
    End Get
    Set(ByVal Value As Integer)
      If Value >= 0 Then
        mintAge = Value
      Else
        Throw New ApplicationException("Age cannot be negative")
      End If
    End Set
  End Property

End Class
				

참조

자세한 내용은 다음 Microsoft 웹 사이트를 참조 하십시오.
오류 처리는 VB.NET 방식: 살아있는 예외 ( Visual Basic 개발자 문서)
http://msdn.microsoft.com/en-us/library/aa227603 (v=vs.60).aspx

예외를 알리는 방법
http://msdn.microsoft.com/en-us/library/ys1b32h3 (v=vs.80).aspx

예외를 Throw 하는 실행
http://msdn.microsoft.com/en-us/library/z7w9ff54 (v=vs.80).aspx

속성

기술 자료: 315965 - 마지막 검토: 2012년 6월 15일 금요일 - 수정: 2.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
키워드:?
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB315965 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:315965

피드백 보내기

 

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