Untuk aplikasi web, kesalahan tidak bisa dihindari, jadi kita harus mengambil tindakan pencegahan dan memberikan penanganan yang tepat untuk kemungkinan kesalahan. Faktanya, mekanisme penanganan kesalahan yang baik merupakan kriteria penting untuk mengukur kualitas aplikasi web. Bayangkan saja, ketika pengguna secara tidak sengaja memasukkan URL yang salah di browser atau ketika pengguna memberikan beberapa informasi yang menyebabkan program mengalami kesalahan, jika kami tidak menangani situasi ini, kami mengizinkan halaman kesalahan 404 atau 500 atau bahkan kesalahan tumpukan informasi disajikan di depan pengguna, yang pastinya akan membuat takut sebagian pengguna. Oleh karena itu, ketika kita mengembangkan aplikasi web, kita harus memiliki pemahaman penuh tentang mekanisme penanganan kesalahan.
Mari kita kembali ke ASP.NET dan mengajukan dua pertanyaan untuk dipikirkan semua orang: Berapa banyak mekanisme penanganan kesalahan yang disediakan ASP.NET? Jika beberapa mekanisme penanganan kesalahan digunakan secara bersamaan, apakah ada prioritas tertentu di antara mekanisme tersebut? Dengan mengingat pertanyaan ini, pertama-tama mari kita lihat file Web.Config yang paling umum:
Mengenai item pengaturan
Selanjutnya mari kita lihat file lain yang juga sangat umum digunakan: Global.asax. Ketika Anda menyebutkan dokumen ini, apa yang Anda pikirkan? Ya, itu adalah peristiwa yang berkaitan dengan dua objek aplikasi Web utama (Aplikasi dan Sesi). Di antara peristiwa-peristiwa ini, terdapat peristiwa terkait kesalahan yang termasuk dalam kategori Aplikasi - Kesalahan, dan metode pemrosesan peristiwa terkait adalah Application_Error. Seperti namanya, metode penanganan peristiwa ini akan dipanggil ketika terjadi kesalahan tingkat aplikasi, sehingga Anda dapat menambahkan kode dalam metode ini untuk menangani kesalahan tersebut, seperti yang ditunjukkan di bawah ini:
protected void Application_Error(object sender, EventArgs e) {
Pengecualian objErr = Server.GetLastError().GetBaseException();
Response.Write("Kesalahan:" + objErr.Pesan);
Server.ClearError();
}
Di sini, setiap orang harus memperhatikan penggunaan Server.ClearError() pada baris kode terakhir. Apa yang terjadi jika Anda tidak menggunakannya? Di sini saya akan mencobanya lagi. Nah, mekanisme penanganan error yang kedua - menggunakan metode penanganan event Application_Error di Global.asax juga telah memulai debutnya.
Kedua metode penanganan error di atas bisa dikatakan bersifat global, yang satu berasal dari file konfigurasi aplikasi, dan yang lainnya adalah metode penanganan event file Global.asax yang harus ditempatkan di direktori root aplikasi. Kebalikan dari global adalah lokal, sehingga kita tentu bertanya-tanya: Apakah ada mekanisme penanganan kesalahan yang berlaku untuk lokal - halaman tertentu? Jawabannya adalah "ya", dan ada dua cara - menggunakan atribut ErrorPage dan menggunakan metode penanganan event Page_Error. Untuk mekanisme pertama, Anda dapat mengatur properti ErrorPage hampir kapan saja untuk menentukan halaman mana yang akan dialihkan ketika terjadi kesalahan pada halaman; untuk mekanisme kedua, sangat mirip dengan metode penanganan event Application_Error, kecuali Tapi waktu pemicunya berbeda. Berikut ini adalah dua contoh spesifik: