Imports System
Imports System.IO

Module AdvancedExceptions
    Sub Main()
        Dim i As Integer
        For i = 0 To 1 Step 1
            Try
                Throw New MyException("Ten wyjątek został zgłoszony z Main")
            Catch e As MyException When i = 0
                'Możliwe jest wykonanie niezbędnych zadań przed odesłaniem wyjątku do kodu wywołującego
                Console.WriteLine("Przechwycono MyException")
                Console.WriteLine(e.ToString())
            Catch e As Exception
                'Możliwe jest wykonanie niezbędnych zadań przed odesłaniem wyjątku do kodu wywołującego
                Console.WriteLine("Przechwycono wyjątek")
                Console.WriteLine(e.ToString())
            Finally
                Console.WriteLine()
            End Try
        Next
        i = 0
        Try
retry:
            Throw New MyException("Ten wyjątek został zgłoszony z Main")
        Catch e As MyException When i = 0
            'Możliwe jest wykonanie niezbędnych zadań przed odesłaniem wyjątku do kodu wywołującego
            Console.WriteLine("Przechwycono MyException")
            Console.WriteLine(e.ToString())
            i = i + 1
            Goto retry
        Catch e As Exception
            'Możliwe jest wykonanie niezbędnych zadań przed odesłaniem wyjątku do kodu wywołującego
            Console.WriteLine("Przechwycono wyjątek")
            Console.WriteLine(e.ToString())
        Finally
            Console.WriteLine()
        End Try
    End Sub
End Module
