VB.Net에서의 예외 처리(Try-Catch)

⚡ 스마트 요약

VB.Net의 예외 처리는 Try, Catch, Finally, Throw 키워드를 사용하여 0으로 나누기와 같은 런타임 오류를 관리하므로 프로그램이 실행 중에 충돌하는 대신 문제에 적절하게 대응할 수 있습니다.

  • 🔍 예외 : 실행 중에 발생하는 문제, 예를 들어 0으로 나누는 경우.
  • 🛡️ 잡아보세요: try 블록은 위험한 코드를 감싸고, catch 블록은 해당 코드에서 발생하는 예외를 처리합니다.
  • 마지막으로 : Finally 블록은 예외 발생 여부와 관계없이 실행됩니다.
  • 🚦 던지다: throw 메서드는 System.Exception 클래스에서 파생된 예외 객체를 발생시킵니다.
  • 🧩 사용자 지정 예외: ApplicationException을 상속받아 사용자 정의 예외 유형을 정의할 수 있습니다.
  • 🤖 AI 도움말: GitHub Copilot 및 IntelliCode 입력하는 동안 Try Catch 블록을 생성합니다.

VB.Net에서의 예외 처리

VB.Net의 예외란 무엇입니까?

An 예외 VB.Net에서는 프로그램 실행 중에 발생하는 문제를 말합니다. 예상치 못한 상황으로 인해 발생합니다. 좋은 예로 나누기 연산을 수행하다가 0(XNUMX)으로 나누는 경우가 있습니다. 예외가 발생합니다.

VB.Net의 예외 처리란 무엇입니까?

예외 있음 VB.Net, 프로그램의 제어를 한 부분에서 다른 부분으로 옮길 수 있습니다. VB.Net에서 예외는 다음 4개의 키워드를 사용하여 처리됩니다.

키워드 세부
시험 Try 블록의 작업은 특정 예외가 활성화될 코드 블록을 식별하는 것입니다. 그 뒤에는 catch 블록이 와야 합니다.
잡아라 예외 포착은 이 블록에서 수행됩니다. Exception을 처리하는 예외 핸들러입니다.
최종적으로 finally 블록을 사용하여 예외 발생 여부에 관계없이 일련의 명령문을 실행합니다.
던지다 문제가 발생한 후 예외가 발생합니다. 이것은 Throw 키워드의 작업입니다.

이 네 가지 핵심 단어의 역할이 명확해졌으니, 이제 이 단어들이 하나의 문장 안에서 어떻게 결합되는지 생각해 보세요.

VB.Net의 Try Catch 구문

VB.Net의 Try Catch 문은 아래 구문을 사용하여 정의됩니다.

Try
   [ try_Statement(s) ]
   [ Exit Try ]
[ Catch [ exception_name [ As type ] ] [ When expression ]
   [ catch_Statement(s) ]
   [ Exit Try ] ]
[ Catch ... ]
[ Finally
   [ finally_Statement(s) ] ]
End Try

Try/Catch 블록은 예외를 발생시킬 수 있는 코드를 둘러싸야 합니다. 이 코드를 보호된 코드라고 합니다. 다양한 유형의 예외를 포착해야 하는 경우 여러 catch 문을 사용할 수 있습니다.

Try Catch 및 finally를 사용한 VB.Net의 예외 처리 예

try/catch 문을 사용하면 일반 프로그램 코드와 오류 처리 시스템을 분리할 수 있습니다. try, catch, finally 키워드를 사용하여 예외를 처리하는 방법을 살펴보겠습니다.

단계 1) 새 콘솔 애플리케이션을 만듭니다.

단계 2) 이 코드를 사용하십시오 :

Module Module1
    Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)
        Dim answer As Integer
        Try
            answer = n1 \ n2
        Catch ex As DivideByZeroException
            Console.WriteLine("Exception: {0}", ex)
        Finally
            Console.WriteLine("Answer is: {0}", answer)
        End Try
    End Sub
    Sub Main()
        divisionFunction(4, 0)
        Console.ReadKey()
    End Sub

End Module

단계 3) 툴바에서 시작 버튼을 클릭하여 코드를 실행합니다. 다음과 같은 출력이 나와야 합니다.

VB.Net try-catch-finally 구문에서 발생한 DivideByZeroException 예외의 콘솔 출력 결과를 보여줍니다.

다음은 코드의 스크린샷입니다.

Visual Studio에서 실행되는 VB.Net Try Catch Finally 예제 코드입니다.

설명 Code:

  1. Module1이라는 모듈을 만듭니다.
  2. 두 개의 정수 인수 n1 및 n2를 사용하여 DivisionFunction이라는 하위 프로시저를 만듭니다. ByVal은 인수 값이 값으로 전달됨을 나타내는 VB.Net 키워드입니다.
  3. 답변이라는 정수 변수를 만듭니다.
  4. Try/Catch 블록의 시작입니다. 예외가 발생할 수 있다고 의심되는 코드를 이 블록으로 묶어야 합니다.
  5. 변수 n1과 n2의 값 사이에 나누기 연산을 수행합니다. 나누기 연산의 결과는 변수 answer에 할당됩니다. 이 코드는 예를 들어 숫자를 XNUMX으로 나눌 때 예외를 발생시킬 수 있으므로 Try/Catch 블록으로 둘러싸고 있습니다.
  6. DivideByZeroException이라는 예외를 포착하고 생성된 예외 메시지를 ex에 할당합니다.
  7. 발생한 예외의 유형/이름을 사용자에게 알리기 위해 콘솔에 일부 텍스트를 인쇄합니다.
  8. 마지막 블록. 이는 예외가 포착되었는지 여부에 관계없이 실행됩니다.
  9. 콘솔에 텍스트를 인쇄하여 나누기 연산의 결과를 보여줍니다.
  10. Try 블록의 끝, 즉 오류 처리 코드의 끝입니다.
  11. DivisionFunction 하위 프로시저가 끝납니다.
  12. 기본 하위 프로시저를 시작합니다.
  13. divisionFunction 하위 프로시저를 호출/호출합니다. 두 정수 인수의 값이 여기에 전달됩니다. n1=4 및 n2=0의 값입니다. 즉, 나누기 연산은 4\0, 즉 n1\n2가 됩니다.
  14. 사용자가 콘솔 창을 닫는 작업을 수행할 때까지 기다리는 콘솔 창을 일시 중지합니다.
  15. 기본 하위 프로시저가 끝납니다.
  16. 모듈이 종료됩니다.

VB.Net의 사용자 정의 예외

VB.Net에서는 사용자 정의 예외를 사용할 수 있습니다. ApplicationException 클래스에서 사용자 정의 예외 클래스를 가져올 수 있습니다. 예제를 통해 이를 살펴보겠습니다.

VB.Net의 사용자 정의 예외 예

다음은 VB.Net에서 사용자 정의 예외를 작성하는 예입니다.

단계 1) 새 콘솔 애플리케이션을 만듭니다.

단계 2) 다음 코드를 사용하십시오.

Module Module1

    Public Class HeightIsZeroException : Inherits ApplicationException
        Public Sub New(ByVal text As String)
            MyBase.New(text)
        End Sub
    End Class
    Public Class Height
        Dim height As Integer = 0
        Sub showHeight()
            If (height = 0) Then
                Throw (New HeightIsZeroException("Zero Height found"))
            Else
                Console.WriteLine("Height is: {0}", height)
            End If
        End Sub
    End Class
    Sub Main()
        Dim hght As Height = New Height()
        Try
            hght.showHeight()
        Catch ex As HeightIsZeroException
            Console.WriteLine("HeightIsZeroException: {0}", ex.Message)
        End Try
        Console.ReadKey()
    End Sub

End Module

단계 3) 코드를 실행하려면 상단 바에서 시작 버튼을 클릭합니다. 다음과 같은 출력이 나와야 합니다.

VB.Net 사용자 정의 HeightIsZeroException 메시지가 콘솔에 출력됩니다.

다음은 코드의 스크린샷입니다.

Visual Studio에서 VB.Net 사용자 정의 예외 클래스 예제 코드를 실행하는 방법

설명 Code:

  1. Module1이라는 모듈을 만듭니다.
  2. HeightIsZeroException이라는 예외 클래스를 생성합니다. 클래스는 모든 ApplicationException 클래스를 상속합니다.
  3. New라는 하위 프로시저를 만듭니다. text라는 문자열 인수 하나를 사용합니다.
  4. 기본 클래스 생성자를 호출하고 여기에 위 인수를 전달합니다.
  5. 새 하위 프로시저가 끝납니다.
  6. HeightIsZeroException 클래스의 끝입니다.
  7. Height라는 클래스를 만듭니다. 공개 액세스 수정자는 공개입니다. 이는 공개적으로 액세스할 수 있음을 의미합니다.
  8. Height라는 정수 변수를 만들고 해당 값을 0으로 초기화합니다.
  9. showHeight()라는 하위 프로시저를 만듭니다.
  10. Height 변수의 값이 0인지 확인합니다. If…Then 조건을 사용했습니다.
  11. 위 조건이 true인 경우 HeightIsZeroException을 발생시킵니다. 이 예외가 발생하면 Zero Height Found 메시지가 표시됩니다.
  12. If 조건이 참이 아닐 때 실행되는 Else 부분입니다.
  13. 높이가 0이 아닐 때 콘솔에 인쇄할 메시지입니다.
  14. If 조건의 끝입니다.
  15. showHeight() 하위 프로시저가 끝납니다.
  16. 수업 종료 높이.
  17. 기본 하위 프로시저를 시작합니다.
  18. Height 클래스의 인스턴스로 Height라는 개체를 만듭니다.
  19. 예외 처리 블록의 시작입니다.
  20. Height 클래스에 정의된 showHeight() 서브 프로시저를 호출합니다. 이 메서드에 접근하기 위해 해당 클래스의 객체를 사용했습니다. 이 줄에서 예외가 발생할 수 있으므로 예외 처리 코드로 감쌌습니다.
  21. HeightIsZeroException 예외가 발생할 경우 객체 ex로 포착합니다.
  22. HeightIsZeroException이 발생했을 때 콘솔에 인쇄할 메시지입니다.
  23. 예외 처리 블록의 끝입니다.
  24. 사용자가 콘솔 창을 닫는 작업을 수행할 때까지 콘솔 창을 일시 중지합니다.
  25. 기본 하위 프로시저가 끝납니다.
  26. 모듈이 종료됩니다.

VB.Net에서 예외 발생

예외 처리에서 예외 객체를 던질 수 있습니다. 단, 해당 객체는 직접 또는 간접적으로 System.Exception 클래스에서 파생되어야 합니다. 예를 들면 다음과 같습니다.

VB.Net의 예외 발생 예

다음은 VB.Net에서 예외를 발생시키는 예시입니다.

단계 1) 새 콘솔 애플리케이션을 만듭니다.

단계 2) 다음 코드를 사용하십시오.

Module Module1

    Sub Main()
        Try
            Throw New ApplicationException("Throwing a custom exception")
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("The Finally Block")
        End Try
        Console.ReadKey()
    End Sub


End Module

단계 3) 코드를 실행하려면 상단 바에서 시작 버튼을 클릭하세요. 다음을 얻어야 합니다.

VB.Net throw 문 콘솔 출력에서 ​​사용자 지정 예외 메시지가 표시됩니다.

다음은 코드의 스크린샷입니다.

VB.Net에서 try-catch와 finally를 사용하여 예외를 발생시키는 예제 코드입니다.

설명 Code:

  1. Module1이라는 모듈을 만듭니다.
  2. 기본 하위 프로시저를 시작합니다.
  3. 오류 처리 코드의 시작입니다.
  4. 예외 객체를 던짐. 이 코드는 예외를 생성할 수 있으므로 Try/Catch 블록으로 둘러싸고 있습니다.
  5. 라인에서 예외가 발생하는 경우 객체 ex로 예외를 포착합니다.
  6. 예외가 발생할 경우 콘솔에 예외 메시지를 인쇄합니다.
  7. 예외가 포착되었는지 여부에 관계없이 실행되는 finally 블록입니다.
  8. finally 블록이 실행될 때 콘솔에 인쇄할 메시지입니다.
  9. 예외 처리 코드의 끝입니다.
  10. 사용자가 콘솔을 닫는 조치를 취할 때까지 콘솔을 잠시 일시 중지합니다.
  11. 기본 하위 프로시저가 끝납니다.
  12. 모듈이 종료됩니다.

자주 묻는 질문

네. try 문은 finally 블록이 포함되어 있으면 catch 블록 없이도 유효합니다. 이러한 try-finally 형식은 정리 코드를 실행하지만 예외 자체를 처리하지는 않습니다.

네. 다양한 예외 유형을 처리하기 위한 여러 개의 Catch 블록을 나열하세요. VB.Net은 예외를 순서대로 확인하고 첫 번째로 일치하는 예외를 사용하므로, 가장 구체적인 예외부터 가장 덜 구체적인 예외 순으로 정렬해야 합니다.

거의 항상 실행됩니다. finally 블록은 예외가 발생했는지 여부와 관계없이, 심지어 Return 문 이후에도 실행됩니다. End 문이나 StackOverflowException이 발생한 경우에만 건너뜁니다.

throw는 현재 예외를 다시 발생시키고 원래 스택을 유지합니다. trace. throw ex는 스택을 초기화합니다. trac현재 줄에 e를 붙여 오류가 실제로 시작된 위치를 숨깁니다. 그냥 throw를 사용하는 것이 좋습니다.

구문 오류는 프로그램 실행 전에 컴파일러에 의해 감지됩니다. 예외는 런타임, 즉 프로그램 실행 중에 발생하며, try-catch 블록을 사용하여 처리할 수 있습니다.

자주 발생하는 예외로는 DivideByZeroException, NullReferenceException, IndexOutOfRangeException, FormatException, OverflowException 등이 있습니다. 이러한 예외들은 모두 System.Exception을 상속받으며 개별적으로 catch할 수 있습니다.

예. GitHub 부조종사 일반 주석을 완전한 Try Catch Finally 블록으로 변환하고 적절한 예외 유형을 제안합니다. 생성된 핸들러를 항상 검토하십시오.

네. 비주얼 스튜디오입니다. 인텔리Code 수천 개의 오픈 소스 프로젝트에서 학습한 내용을 바탕으로, Catch 절과 예외 유형에 대해 문맥을 고려한 전체 줄 자동 완성 기능을 제공합니다.

이 게시물을 요약하면 다음과 같습니다.