Cara menangani pengecualian menggunakan try/catch
Tujuan dari blok try-catch adalah menangkap dan menangani pengecualian yang dihasilkan oleh kode kerja. Beberapa pengecualian dapat ditangani dalam blok catch
dan masalah diselesaikan tanpa pengecualian yang ditumbuhi kembali; namun, lebih sering satu-satunya hal yang dapat Anda lakukan adalah memastikan bahwa pengecualian yang sesuai dilemparkan.
Contoh
Dalam contoh ini, IndexOutOfRangeException bukan pengecualian yang paling tepat: ArgumentOutOfRangeException lebih masuk akal untuk metode karena kesalahan disebabkan oleh argumen index
yang diteruskan oleh pemanggil.
static int GetInt(int[] array, int index)
{
try
{
return array[index];
}
catch (IndexOutOfRangeException e) // CS0168
{
Console.WriteLine(e.Message);
// Set IndexOutOfRangeException to the new exception's InnerException.
throw new ArgumentOutOfRangeException("index parameter is out of range.", e);
}
}
Komentar
Kode yang menyebabkan pengecualian diapit dalam blok try
. Pernyataan catch
ditambahkan segera setelah itu untuk menangani IndexOutOfRangeException
, jika itu terjadi. Blok catch
menangani IndexOutOfRangeException
dan melemparkan yang lebih tepat ArgumentOutOfRangeException
sebagai gantinya. Untuk memberi informasi sebanyak mungkin kepada pemanggil, pertimbangkan untuk menentukan pengecualian asli sebagai InnerException dari pengecualian baru. Karena properti InnerException bersifat baca-saja, Anda harus menetapkannya di konstruktor pengecualian baru.