Secara keseluruhan, menggunakan try / catch yang banyak sudah usang, karena catch block sangat mahal dari sudut sumber daya. Coba / tangkap penggunaan mengingatkan saya pada manajemen risiko . Manajemen risiko memiliki dua dimensi:
- Peluang terjadinya risiko
- Kerusakan yang dimilikinya
Sekarang, jika Anda keluar dari rumah Anda, piano jatuh di kepala Anda di suatu tempat sementara sangat tidak mungkin terjadi (mungkin 0,001%), tetapi dapat membunuh Anda.
Penanganan pengecualian seperti itu. Coba blok tidak mahal. Tetapi catch block sangat mahal, karena perlu membuat tabel stack stack, dan melakukan hal-hal lain. Karena itu dalam membuat keputusan tentang coba / tangkap balok, Anda harus mempertimbangkan berapa kali Anda mungkin mengenai tangkap balok. Jika di antara 10.000 penggunaan, Anda hanya menekannya 1 kali, lalu gunakan. Tetapi jika itu adalah formulir, dan pengguna mungkin tidak mengisinya dengan benar 50% kali, maka Anda harus menghindari menempatkan blok coba / tangkap ke dalam tindakan di sana.
Di tempat-tempat di mana probabilitas terjadinya pengecualian tinggi, disarankan untuk menggunakan if {} else {}
blok untuk menghindari terjadinya pengecualian. Misalnya, tempat Anda ingin membagi dua angka, alih-alih menulis:
try
{
int result = a/b;
}
catch (DivisionByZeroException ex)
{
// Showing a message here, and logging of course.
}
Anda harus menulis:
if (b == 0)
{
int result = a/b;
}
else
{
// Showing a message to user to change the value of b, etc.
}