Bagikan melalui


Cara menggunakan pengecualian tertentu dalam blok tangkapan

Secara umum, praktik pemrograman yang baik adalah menangkap pengecualian spesifik daripada menggunakan pernyataan dasar catch.

Ketika pengecualian terjadi, itu diteruskan ke atas tumpukan dan setiap blok penampung diberi kesempatan untuk mengatasinya. Urutan pernyataan `catch` itu penting. Letakkan blok tangkapan yang ditargetkan untuk pengecualian tertentu sebelum blok tangkapan pengecualian umum atau pengkompilasi mungkin mengeluarkan kesalahan. Blok tangkapan yang tepat ditentukan dengan mencocokkan jenis pengecualian dengan nama pengecualian yang ditentukan dalam blok tangkapan. Jika tidak ada blok tangkapan spesifik, pengecualian akan ditangkap oleh blok tangkapan umum, jika ada.

Contoh kode berikut menggunakan blok try/catch untuk menangkap error InvalidCastException. Sampel membuat kelas yang disebut Employee dengan satu properti, tingkat karyawan (Emlevel). Metode, PromoteEmployee, mengambil objek dan menaikkan level karyawan. Terjadi InvalidCastException ketika instans DateTime diteruskan ke metode PromoteEmployee.

using System;

public class Employee
{
    //Create employee level property.
    public int Emlevel
    {
        get
        {
            return(emlevel);
        }
        set
        {
            emlevel = value;
        }
    }

    private int emlevel = 0;
}

public class Ex13
{
    public static void PromoteEmployee(Object emp)
    {
        // Cast object to Employee.
        var e = (Employee) emp;
        // Increment employee level.
        e.Emlevel = e.Emlevel + 1;
    }

    static void Main()
    {
        try
        {
            Object o = new Employee();
            DateTime newYears = new DateTime(2001, 1, 1);
            // Promote the new employee.
            PromoteEmployee(o);
            // Promote DateTime; results in InvalidCastException as newYears is not an employee instance.
            PromoteEmployee(newYears);
        }
        catch (InvalidCastException e)
        {
            Console.WriteLine("Error passing data to PromoteEmployee method. " + e.Message);
        }
    }
}
Public Class Employee
    'Create employee level property.
    Public Property Emlevel As Integer
        Get
            Return emlevelValue
        End Get
        Set
            emlevelValue = Value
        End Set
    End Property

    Private emlevelValue As Integer = 0
End Class

Public Class Ex13
    Public Shared Sub PromoteEmployee(emp As Object)
        ' Cast object to Employee.
        Dim e As Employee = CType(emp, Employee)
        ' Increment employee level.
        e.Emlevel = e.Emlevel + 1
    End Sub

    Public Shared Sub Main()
        Try
            Dim o As Object = New Employee()
            Dim newYears As New DateTime(2001, 1, 1)
            ' Promote the new employee.
            PromoteEmployee(o)
            ' Promote DateTime; results in InvalidCastException as newYears is not an employee instance.
            PromoteEmployee(newYears)
        Catch e As InvalidCastException
            Console.WriteLine("Error passing data to PromoteEmployee method. " + e.Message)
        End Try
    End Sub
End Class

Lihat juga