Imports System
Imports System.IO

Module BasicExceptions
    Sub ThrowMyException()
        Throw New MyException("Ten wyjątek został zgłoszony z ThrowMyException")
    End Sub

    Sub ExceptionGenerator(ByVal i As Integer)
        Dim a As Integer
        Dim b As Integer
        Dim c As Integer

        Select Case i
            Case 0
                ' Własny wyjątek
                ThrowMyException()
            Case 1
                ' DivideByZero
                a = 0
                b = 1
                c = b \ a
            Case 2
                ' Przepełnienie stosu
                ExceptionGenerator(2)
            Case 3
                ' Brak pliku
                Throw New FileNotFoundException("Test")
        End Select
    End Sub

    Sub Main()
        Dim i As Integer
        For i = 0 To 3 Step 1
            Try
                ExceptionGenerator(i)
            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
                'Blok Finally zostanie wykonany nawet w przypadku zgłoszenia wyjątku
                Console.WriteLine()
            End Try
        Next
    End Sub

End Module
