Menggunakan pengatur pengecualian yang difilter pengguna

Pengatur pengecualian yang difilter pengguna mengambil dan menangani pengecualian berdasarkan persyaratan yang Anda tentukan untuk pengecualian. Pengatur ini menggunakan pernyataan catch dengan kata kunci when (Catch dan When dalam Visual Basic).

Teknik ini berguna ketika objek pengecualian tertentu sesuai dengan beberapa kesalahan. Dalam hal ini, objek biasanya memiliki properti yang berisi kode kesalahan spesifik yang terkait dengan kesalahan. Anda dapat menggunakan properti kode kesalahan dalam ekspresi untuk memilih hanya kesalahan tertentu yang ingin Anda tangani dalam klausa catch tersebut.

Contoh berikut mengilustrasikan pernyataan catch/when.

try
{
    //Try statements.  
}
catch (Exception ex) when (ex.Message.Contains("404"))
{
    //Catch statements.
}
Try  
    'Try statements.  
    Catch When Err = VBErr_ClassLoadException
    'Catch statements.
End Try  

Ekspresi klausa yang difilter pengguna tidak dibatasi dengan cara apa pun. Jika pengecualian terjadi selama eksekusi ekspresi yang difilter pengguna, pengecualian tersebut akan dibuang dan ekspresi filter dianggap telah dievaluasi menjadi salah. Dalam hal ini, runtime bahasa umum melanjutkan pencarian pengatur untuk pengecualian saat ini.

Menggabungkan pengecualian tertentu dan klausa yang difilter pengguna

Pernyataan catch dapat berisi pengecualian khusus dan klausa yang difilter pengguna. Runtime menguji pengecualian tertentu terlebih dahulu. Jika pengecualian tertentu berhasil, runtime akan mengeksekusi filter pengguna. Filter generik dapat berisi referensi ke variabel yang dideklarasikan dalam filter kelas. Perhatikan bahwa urutan dua klausa filter tidak dapat dibalik.

Contoh berikut menunjukkan pengecualian tertentu dalam pernyataan pengambilan serta klausa yang difilter pengguna menggunakan kata kunci saat.

try
{
    //Try statements.  
}
catch (System.Net.Http.HttpRequestException ex) when (ex.Message.Contains("404"))
{
    //Catch statements.
}
Try  
    'Try statements.
    Catch cle As ClassLoadException When cle.IsRecoverable()  
    'Catch statements.
End Try  

Lihat juga