Bagikan melalui


Memproses Pengecualian Tidak Tertangani (C#)

oleh Scott Mitchell

Melihat atau mengunduh kode sampel (cara mengunduh)

Ketika kesalahan runtime terjadi pada aplikasi web dalam produksi, penting untuk memberi tahu pengembang dan mencatat kesalahan sehingga dapat didiagnosis pada titik waktu selanjutnya. Tutorial ini memberikan gambaran umum tentang bagaimana ASP.NET memproses kesalahan runtime dan melihat salah satu cara untuk menjalankan kode kustom setiap kali pengecualian yang tidak tertangani gelembung hingga runtime ASP.NET.

Pengantar

Ketika pengecualian yang tidak tertangani terjadi dalam aplikasi ASP.NET, itu bergelembung hingga runtime ASP.NET, yang meningkatkan Error peristiwa dan menampilkan halaman kesalahan yang sesuai. Ada tiga jenis halaman kesalahan yang berbeda: Runtime Error Yellow Screen of Death (YSOD); Detail Pengecualian YSOD; dan halaman kesalahan kustom. Dalam tutorial sebelumnya , kami mengonfigurasi aplikasi untuk menggunakan halaman kesalahan kustom untuk pengguna jarak jauh dan Detail Pengecualian YSOD untuk pengguna yang mengunjungi secara lokal.

Menggunakan halaman kesalahan kustom yang ramah manusia yang cocok dengan tampilan dan nuansa situs lebih disukai daripada Runtime Error YSOD default, tetapi menampilkan halaman kesalahan kustom hanyalah salah satu bagian dari solusi penanganan kesalahan yang komprehensif. Ketika kesalahan terjadi dalam aplikasi dalam produksi, penting bahwa pengembang diberi tahu tentang kesalahan sehingga mereka dapat menemukan penyebab pengecualian dan mengatasinya. Selain itu, detail kesalahan harus dicatat sehingga kesalahan dapat diperiksa dan didiagnosis di lain waktu.

Tutorial ini menunjukkan cara mengakses detail pengecualian yang tidak tertangani sehingga mereka dapat dicatat dan pengembang diberi tahu. Dua tutorial setelah ini mengeksplorasi pustaka pengelogan kesalahan yang, setelah sedikit konfigurasi, akan secara otomatis memberi tahu pengembang tentang kesalahan runtime dan mencatat detailnya.

Catatan

Informasi yang diperiksa dalam tutorial ini paling berguna jika Anda perlu memproses pengecualian yang tidak tertangani dengan cara yang unik atau disesuaikan. Dalam kasus di mana Anda hanya perlu mencatat pengecualian dan memberi tahu pengembang, menggunakan pustaka pengelogan kesalahan adalah caranya. Dua tutorial berikutnya memberikan gambaran umum tentang dua pustaka tersebut.

Menjalankan Kode SaatErrorPeristiwa Dimunculkan

Peristiwa memberikan mekanisme kepada objek untuk memberi sinyal bahwa sesuatu yang menarik telah terjadi, dan agar objek lain menjalankan kode sebagai respons. Sebagai pengembang ASP.NET, Anda terbiasa berpikir dalam hal peristiwa. Jika Anda ingin menjalankan beberapa kode saat pengunjung mengklik Tombol tertentu, Anda membuat penanganan aktivitas untuk peristiwa Tombol tersebut Click dan meletakkan kode Anda di sana. Mengingat bahwa runtime ASP.NET meningkatkan peristiwanyaError setiap kali pengecualian yang tidak tertangani terjadi, kode untuk mencatat detail kesalahan akan masuk ke penanganan aktivitas. Tetapi bagaimana Anda membuat penanganan aktivitas untuk peristiwa tersebut Error ?

Peristiwa ini Error adalah salah satu dari banyak peristiwa di HttpApplication kelas yang dinaikkan pada tahap tertentu dalam alur HTTP selama masa pakai permintaan. Misalnya, HttpApplication peristiwa kelas BeginRequest dinaikkan pada awal setiap permintaan; peristiwanyaAuthenticateRequest dinaikkan ketika modul keamanan telah mengidentifikasi pemohon. Peristiwa ini HttpApplication memberi pengembang halaman sarana untuk menjalankan logika kustom di berbagai titik dalam masa pakai permintaan.

Penanganan aktivitas untuk HttpApplication peristiwa dapat ditempatkan dalam file khusus bernama Global.asax. Untuk membuat file ini di situs web Anda, tambahkan item baru ke akar situs web Anda menggunakan templat Kelas Aplikasi Global dengan nama Global.asax.

Sceenshot yang menyoroti file Global dot A S A X.

Gambar 1: Tambahkan Global.asax ke aplikasi web Anda
(Klik untuk melihat gambar ukuran penuh)

Konten dan struktur file yang Global.asax dibuat oleh Visual Studio sedikit berbeda berdasarkan apakah Anda menggunakan Proyek Aplikasi Web (WAP) atau Proyek Situs Web (WSP). Dengan WAP, diimplementasikan Global.asax sebagai dua file terpisah - Global.asax dan Global.asax.cs. File Global.asax tidak berisi apa pun selain direktif @Application yang mereferensikan .cs file; penanganan aktivitas yang menarik ditentukan dalam Global.asax.cs file. Untuk WSP, hanya satu file yang dibuat, Global.asax, dan penanganan aktivitas ditentukan dalam <script runat="server"> blok.

File Global.asax yang dibuat dalam WAP oleh templat Kelas Aplikasi Global Visual Studio mencakup penanganan aktivitas bernama Application_BeginRequest, , Application_AuthenticateRequestdan Application_Error, yang masing-masing merupakan penanganan aktivitas untuk HttpApplication peristiwa BeginRequest, AuthenticateRequest, dan Error. Ada juga penanganan aktivitas bernama Application_Start, , Session_StartApplication_End, dan Session_End, yang merupakan penanganan aktivitas yang diaktifkan ketika aplikasi web dimulai, ketika sesi baru dimulai, ketika aplikasi berakhir, dan ketika sesi berakhir, masing-masing. File Global.asax yang dibuat di WSP oleh Visual Studio hanya Application_Errorberisi penanganan aktivitas , , Session_StartApplication_Start, Application_End, dan Session_End .

Catatan

Saat menyebarkan aplikasi ASP.NET, Anda perlu menyalin Global.asax file ke lingkungan produksi. File Global.asax.cs , yang dibuat di WAP, tidak perlu disalin ke produksi karena kode ini dikompilasi ke dalam perakitan proyek.

Penanganan aktivitas yang dibuat oleh templat Kelas Aplikasi Global Visual Studio tidak lengkap. Anda dapat menambahkan penanganan aktivitas untuk peristiwa apa pun HttpApplication dengan memberi nama penanganan Application_EventNameaktivitas . Misalnya, Anda dapat menambahkan kode berikut ke Global.asax file untuk membuat penanganan aktivitas untuk peristiwa:AuthorizeRequest

protected void Application_AuthorizeRequest(object sender, EventArgs e)
{
    // Event handler code
}

Demikian juga, Anda dapat menghapus penanganan aktivitas apa pun yang dibuat oleh templat Kelas Aplikasi Global yang tidak diperlukan. Untuk tutorial ini, kami hanya memerlukan penanganan aktivitas untuk Error acara; jangan ragu untuk menghapus penanganan aktivitas lain dari Global.asax file.

Catatan

Modul HTTP menawarkan cara lain untuk menentukan penanganan aktivitas untuk HttpApplication peristiwa. Modul HTTP dibuat sebagai file kelas yang dapat ditempatkan langsung dalam proyek aplikasi web atau dipisahkan ke dalam pustaka kelas terpisah. Karena dapat dipisahkan menjadi pustaka kelas, Modul HTTP menawarkan model yang lebih fleksibel dan dapat digunakan kembali untuk membuat HttpApplication penanganan aktivitas. Global.asax Sedangkan file khusus untuk aplikasi web tempatnya berada, Modul HTTP dapat dikompilasi ke dalam rakitan, di mana menambahkan Modul HTTP ke situs web semampu menjatuhkan perakitan di Bin folder dan mendaftarkan Modul di Web.config. Tutorial ini tidak melihat pembuatan dan penggunaan Modul HTTP, tetapi dua pustaka pengelogan kesalahan yang digunakan dalam dua tutorial berikut diimplementasikan sebagai Modul HTTP. Untuk latar belakang lebih lanjut tentang manfaat Modul HTTP, lihat Menggunakan Modul http dan Handler untuk Membuat Komponen ASP.NET yang Dapat Dicolokkan.

Mengambil Informasi Tentang Pengecualian yang Tidak Tertangani

Pada titik ini kami memiliki file Global.asax dengan penanganan Application_Error aktivitas. Ketika penanganan aktivitas ini dijalankan, kita perlu memberi tahu pengembang tentang kesalahan dan mencatat detailnya. Untuk menyelesaikan tugas-tugas ini, pertama-tama kita perlu menentukan detail pengecualian yang dimunculkan. Gunakan metode objek GetLastError Server untuk mengambil detail pengecualian yang tidak tertangani yang menyebabkan Error peristiwa diaktifkan.

protected void Application_Error(object sender, EventArgs e)
{
    // Get the error details
    HttpException lastErrorWrapper = 
        Server.GetLastError() as HttpException;
}

Metode GetLastError mengembalikan objek jenis Exception, yang merupakan jenis dasar untuk semua pengecualian dalam .NET Framework. Namun, dalam kode di atas saya mentransmisikan objek Pengecualian yang dikembalikan oleh GetLastError ke dalam objek HttpException . Error Jika peristiwa dipicu karena pengecualian dilemparkan selama pemrosesan sumber daya ASP.NET maka pengecualian yang dilemparkan dibungkus dalam HttpException. Untuk mendapatkan pengecualian aktual yang mengecilkan peristiwa Kesalahan, gunakan InnerException properti . Error Jika peristiwa dimunculkan karena pengecualian berbasis HTTP, seperti permintaan untuk halaman yang tidak ada, HttpException dilemparkan, tetapi tidak memiliki pengecualian dalam.

Kode berikut menggunakan GetLastErrormessage untuk mengambil informasi tentang pengecualian yang memicu Error peristiwa, menyimpan HttpException dalam variabel bernama lastErrorWrapper. Kemudian menyimpan jenis, pesan, dan jejak tumpukan pengecualian asal dalam tiga variabel string, memeriksa apakah lastErrorWrapper adalah pengecualian aktual yang memicu Error peristiwa (dalam kasus pengecualian berbasis HTTP) atau jika itu hanya pembungkus untuk pengecualian yang dilemparkan saat memproses permintaan.

protected void Application_Error(object sender, EventArgs e)
{
    // Get the error details
    HttpException lastErrorWrapper = 
        Server.GetLastError() as HttpException;

    Exception lastError = lastErrorWrapper;
    if (lastErrorWrapper.InnerException != null)
        lastError = lastErrorWrapper.InnerException;

    string lastErrorTypeName = lastError.GetType().ToString();
    string lastErrorMessage = lastError.Message;
    string lastErrorStackTrace = lastError.StackTrace;
}

Pada titik ini Anda memiliki semua informasi yang Anda butuhkan untuk menulis kode yang akan mencatat detail pengecualian ke tabel database. Anda dapat membuat tabel database dengan kolom untuk setiap detail kesalahan yang menarik - jenis, pesan, jejak tumpukan, dan sebagainya - bersama dengan bagian informasi berguna lainnya, seperti URL halaman yang diminta dan nama pengguna yang saat ini masuk. Di penanganan Application_Error aktivitas, Anda kemudian akan menyambungkan ke database dan menyisipkan rekaman ke dalam tabel. Demikian juga, Anda dapat menambahkan kode untuk memberi tahu pengembang tentang kesalahan melalui email.

Pustaka pengelogan kesalahan yang diperiksa dalam dua tutorial berikutnya menyediakan fungsionalitas seperti itu di luar kotak, jadi tidak perlu membangun pengelogan kesalahan ini dan pemberitahuan sendiri. Namun, untuk menggambarkan bahwa Error peristiwa sedang dinaikkan dan bahwa Application_Error penanganan aktivitas dapat digunakan untuk mencatat detail kesalahan dan memberi tahu pengembang, mari kita tambahkan kode yang memberi tahu pengembang ketika terjadi kesalahan.

Memberi tahu Pengembang Ketika Pengecualian Tidak Tertangani Terjadi

Ketika pengecualian yang tidak tertangani terjadi di lingkungan produksi, penting untuk memperingatkan tim pengembangan sehingga mereka dapat menilai kesalahan dan menentukan tindakan apa yang perlu diambil. Misalnya, jika ada kesalahan dalam menyambungkan ke database maka Anda harus memeriksa kembali string koneksi Anda dan, mungkin, membuka tiket dukungan dengan perusahaan hosting web Anda. Jika pengecualian terjadi karena kesalahan pemrograman, kode tambahan atau logika validasi mungkin perlu ditambahkan untuk mencegah kesalahan tersebut di masa mendatang.

Kelas .NET Framework di System.Net.Mail namespace memudahkan pengiriman email. Kelas MailMessage mewakili pesan email dan memiliki properti seperti To, , FromSubject, Body, dan Attachments. SmtpClass digunakan untuk mengirim MailMessage objek menggunakan server SMTP tertentu; pengaturan server SMTP dapat ditentukan secara terprogram atau deklaratif dalam <system.net> elemen di Web.config file. Untuk informasi selengkapnya tentang mengirim pesan email dalam aplikasi ASP.NET lihat artikel saya, Mengirim Email dari Situs Halaman Web ASP.NET, dan Tanya Jawab Umum System.Net.Mail.

Catatan

Elemen <system.net> berisi pengaturan server SMTP yang SmtpClient digunakan oleh kelas saat mengirim email. Perusahaan hosting web Anda kemungkinan memiliki server SMTP yang dapat Anda gunakan untuk mengirim email dari aplikasi Anda. Lihat bagian dukungan host web Anda untuk informasi tentang pengaturan server SMTP yang harus Anda gunakan di aplikasi web Anda.

Tambahkan kode berikut ke penanganan Application_Error aktivitas untuk mengirim email kepada pengembang saat terjadi kesalahan:

void Application_Error(object sender, EventArgs e)
{
    // Get the error details
    HttpException lastErrorWrapper = 
        Server.GetLastError() as HttpException;

    Exception lastError = lastErrorWrapper;
    if (lastErrorWrapper.InnerException != null)
        lastError = lastErrorWrapper.InnerException;

    string lastErrorTypeName = lastError.GetType().ToString();
    string lastErrorMessage = lastError.Message;
    string lastErrorStackTrace = lastError.StackTrace;

    const string ToAddress = "support@example.com";
    const string FromAddress = "support@example.com";
    const string Subject = "An Error Has Occurred!";
    
    // Create the MailMessage object
    MailMessage mm = new MailMessage(FromAddress, ToAddress);
    mm.Subject = Subject;
    mm.IsBodyHtml = true;
    mm.Priority = MailPriority.High;
    mm.Body = string.Format(@"
<html>
<body>
  <h1>An Error Has Occurred!</h1>
  <table cellpadding=""5"" cellspacing=""0"" border=""1"">
  <tr>
  <tdtext-align: right;font-weight: bold"">URL:</td>
  <td>{0}</td>
  </tr>
  <tr>
  <tdtext-align: right;font-weight: bold"">User:</td>
  <td>{1}</td>
  </tr>
  <tr>
  <tdtext-align: right;font-weight: bold"">Exception Type:</td>
  <td>{2}</td>
  </tr>
  <tr>
  <tdtext-align: right;font-weight: bold"">Message:</td>
  <td>{3}</td>
  </tr>
  <tr>
  <tdtext-align: right;font-weight: bold"">Stack Trace:</td>
  <td>{4}</td>
  </tr> 
  </table>
</body>
</html>",
        Request.RawUrl,
        User.Identity.Name,
        lastErrorTypeName,
        lastErrorMessage,
        lastErrorStackTrace.Replace(Environment.NewLine, "<br />"));

    // Attach the Yellow Screen of Death for this error   
    string YSODmarkup = lastErrorWrapper.GetHtmlErrorMessage();
    if (!string.IsNullOrEmpty(YSODmarkup))
    {
        Attachment YSOD = 
            Attachment.CreateAttachmentFromString(YSODmarkup, "YSOD.htm");
        mm.Attachments.Add(YSOD);
    }

    // Send the email
    SmtpClient smtp = new SmtpClient();
    smtp.Send(mm);
}

Meskipun kode di atas cukup panjang, sebagian besar membuat HTML yang muncul dalam email yang dikirim ke pengembang. Kode dimulai dengan mereferensikan yang HttpException dikembalikan oleh GetLastError metode (lastErrorWrapper). Pengecualian aktual yang dinaikkan oleh permintaan diambil melalui lastErrorWrapper.InnerException dan ditetapkan ke variabel lastError. Informasi pelacakan jenis, pesan, dan tumpukan diambil dari lastError dan disimpan dalam tiga variabel string.

Selanjutnya, MailMessage objek bernama mm dibuat. Isi email berformat HTML dan menampilkan URL halaman yang diminta, nama pengguna yang saat ini masuk, dan informasi tentang pengecualian (jenis, pesan, dan jejak tumpukan). Salah satu hal keren tentang HttpException kelas ini adalah Anda dapat menghasilkan HTML yang digunakan untuk membuat Detail Pengecualian Yellow Screen of Death (YSOD) dengan memanggil metode GetHtmlErrorMessage. Metode ini digunakan di sini untuk mengambil markup YSOD Detail Pengecualian dan menambahkannya ke email sebagai lampiran. Satu kata peringatan: jika pengecualian yang memicu Error peristiwa adalah pengecualian berbasis HTTP (seperti permintaan untuk halaman yang tidak ada) maka GetHtmlErrorMessage metode akan mengembalikan null.

Langkah terakhir adalah mengirim MailMessage. Ini dilakukan dengan membuat metode baru SmtpClient dan memanggil metodenya Send .

Catatan

Sebelum menggunakan kode ini di aplikasi web, Anda mungkin ingin mengubah nilai dalam ToAddress konstanta dan FromAddress dari support@example.com ke alamat email apa pun yang harus dikirim dan berasal dari email pemberitahuan kesalahan. Anda juga harus menentukan pengaturan server SMTP di bagian <system.net> di Web.config. Konsultasikan dengan penyedia host web Anda untuk menentukan pengaturan server SMTP yang akan digunakan.

Dengan kode ini di tempat kapan saja ada kesalahan pengembang dikirimi pesan email yang meringkas kesalahan dan menyertakan YSOD. Dalam tutorial sebelumnya kami menunjukkan kesalahan runtime dengan mengunjungi Genre.aspx dan meneruskan nilai yang tidak valid ID melalui querystring, seperti Genre.aspx?ID=foo. Mengunjungi halaman dengan Global.asax file di tempat menghasilkan pengalaman pengguna yang sama seperti dalam tutorial sebelumnya - di lingkungan pengembangan Anda akan terus melihat Detail Pengecualian Layar Kuning Kematian, sementara di lingkungan produksi Anda akan melihat halaman kesalahan kustom. Selain perilaku yang ada ini, pengembang dikirimi email.

Gambar 2 menunjukkan email yang diterima saat mengunjungi Genre.aspx?ID=foo. Isi email meringkas informasi pengecualian, sementara YSOD.htm lampiran menampilkan konten yang ditampilkan dalam Detail Pengecualian YSOD (lihat Gambar 3).

Cuplikan layar yang memperlihatkan email yang dikirim ke pengembang.

Gambar 2: Pengembang Dikirimi Pemberitahuan Email Setiap Kali Ada Pengecualian yang Tidak Tertangani
(Klik untuk melihat gambar ukuran penuh)

Cuplikan layar yang memperlihatkan bahwa pemberitahuan email menyertakan detail pengecualian Y S O D sebagai lampiran.

Gambar 3: Pemberitahuan Email Menyertakan Detail Pengecualian YSOD sebagai Lampiran
(Klik untuk melihat gambar ukuran penuh)

Bagaimana Dengan Menggunakan Halaman Kesalahan Kustom?

Tutorial ini menunjukkan cara menggunakan Global.asax dan penanganan Application_Error aktivitas untuk menjalankan kode ketika pengecualian yang tidak tertangani terjadi. Secara khusus, kami menggunakan penanganan aktivitas ini untuk memberi tahu pengembang tentang kesalahan; kita dapat memperluasnya untuk juga mencatat detail kesalahan dalam database. Kehadiran penanganan Application_Error aktivitas tidak memengaruhi pengalaman pengguna akhir. Mereka masih melihat halaman kesalahan yang dikonfigurasi, baik itu YSOD Detail Kesalahan, YSOD Kesalahan Runtime, atau halaman kesalahan kustom.

Adalah wajar untuk bertanya-tanya apakah Global.asax file dan Application_Error peristiwa diperlukan saat menggunakan halaman kesalahan kustom. Ketika kesalahan terjadi, pengguna ditampilkan halaman kesalahan kustom sehingga mengapa kami tidak dapat menempatkan kode untuk memberi tahu pengembang dan mencatat detail kesalahan ke kelas kode di belakang halaman kesalahan kustom? Meskipun Anda pasti dapat menambahkan kode ke kelas code-behind halaman kesalahan kustom, Anda tidak memiliki akses ke detail pengecualian yang memicu Error peristiwa saat menggunakan teknik yang kami jelajahi dalam tutorial sebelumnya. Memanggil GetLastError metode dari halaman kesalahan kustom mengembalikan Nothing.

Alasan untuk perilaku ini adalah karena halaman kesalahan kustom tercapai melalui pengalihan. Ketika pengecualian yang tidak tertangani mencapai runtime ASP.NET, mesin ASP.NET menaikkan peristiwanya Error (yang menjalankan Application_Error penanganan aktivitas) lalu mengalihkan pengguna ke halaman kesalahan kustom dengan mengeluarkan Response.Redirect(customErrorPageUrl). Metode mengirimkan Response.Redirect respons ke klien dengan kode status HTTP 302, menginstruksikan browser untuk meminta URL baru, yaitu halaman kesalahan kustom. Browser kemudian secara otomatis meminta halaman baru ini. Anda dapat mengetahui bahwa halaman kesalahan kustom diminta secara terpisah dari halaman tempat kesalahan berasal karena bilah Alamat browser berubah menjadi URL halaman kesalahan kustom (lihat Gambar 4).

Cuplikan layar yang menunjukkan bahwa browser dialihkan saat terjadi kesalahan.

Gambar 4: Ketika Terjadi Kesalahan, Browser Dialihkan ke URL Halaman Kesalahan Kustom
(Klik untuk melihat gambar ukuran penuh)

Efek bersih adalah bahwa permintaan di mana pengecualian yang tidak tertangani terjadi berakhir ketika server merespons dengan pengalihan HTTP 302. Permintaan berikutnya ke halaman kesalahan kustom adalah permintaan baru; pada titik ini mesin ASP.NET telah membuang informasi kesalahan dan, selain itu, tidak memiliki cara untuk mengaitkan pengecualian yang tidak tertangani dalam permintaan sebelumnya dengan permintaan baru untuk halaman kesalahan kustom. Inilah sebabnya mengapa GetLastError kembali null ketika dipanggil dari halaman kesalahan kustom.

Namun, dimungkinkan untuk menjalankan halaman kesalahan kustom selama permintaan yang sama yang menyebabkan kesalahan. Metode mentransfer Server.Transfer(url) eksekusi ke URL yang ditentukan dan memprosesnya dalam permintaan yang sama. Anda dapat memindahkan kode di Application_Error penanganan aktivitas ke kelas kode di belakang halaman kesalahan kustom, menggantinya Global.asax dengan kode berikut:

protected void Application_Error(object sender, EventArgs e)
{
    // Transfer the user to the appropriate custom error page
    HttpException lastErrorWrapper = 
        Server.GetLastError() as HttpException;

    if (lastErrorWrapper.GetHttpCode() == 404)
    {
        Server.Transfer("~/ErrorPages/404.aspx");
    }
    else
    {
        Server.Transfer("~/ErrorPages/Oops.aspx");
    }
}

Sekarang ketika pengecualian yang tidak tertangani terjadi, Application_Error penanganan aktivitas mentransfer kontrol ke halaman kesalahan kustom yang sesuai berdasarkan kode status HTTP. Karena kontrol ditransfer, halaman kesalahan kustom memiliki akses ke informasi pengecualian yang tidak tertangani melalui Server.GetLastError dan dapat memberi tahu pengembang tentang kesalahan dan mencatat detailnya. Panggilan Server.Transfer menghentikan mesin ASP.NET mengalihkan pengguna ke halaman kesalahan kustom. Sebagai gantinya, konten halaman kesalahan kustom dikembalikan sebagai respons terhadap halaman yang menghasilkan kesalahan.

Ringkasan

Ketika pengecualian yang tidak tertangani terjadi di aplikasi web ASP.NET, runtime ASP.NET meningkatkan Error peristiwa dan menampilkan halaman kesalahan yang dikonfigurasi. Kami dapat memberi tahu pengembang tentang kesalahan, mencatat detailnya, atau memprosesnya dengan cara lain, dengan membuat penanganan aktivitas untuk peristiwa Kesalahan. Ada dua cara untuk membuat penanganan aktivitas untuk HttpApplication peristiwa seperti Error: dalam Global.asax file atau dari Modul HTTP. Tutorial ini menunjukkan cara membuat Error penanganan aktivitas dalam Global.asax file yang memberi tahu pengembang tentang kesalahan melalui pesan email.

Error Membuat penanganan aktivitas berguna jika Anda perlu memproses pengecualian yang tidak tertangani dengan cara yang unik atau disesuaikan. Namun, membuat penanganan aktivitas Anda sendiri Error untuk mencatat pengecualian atau memberi tahu pengembang bukanlah penggunaan waktu Anda yang paling efisien karena sudah ada pustaka pengelogan kesalahan yang gratis dan mudah digunakan yang dapat disiapkan dalam hitungan menit. Dua tutorial berikutnya memeriksa dua pustaka tersebut.

Selamat Pemrograman!

Bacaan lebih lanjut

Untuk informasi selengkapnya tentang topik yang dibahas dalam tutorial ini, lihat sumber daya berikut: