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 SaatError
Peristiwa 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
.
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_AuthenticateRequest
dan Application_Error
, yang masing-masing merupakan penanganan aktivitas untuk HttpApplication
peristiwa BeginRequest
, AuthenticateRequest
, dan Error
. Ada juga penanganan aktivitas bernama Application_Start
, , Session_Start
Application_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_Error
berisi penanganan aktivitas , , Session_Start
Application_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_EventName
aktivitas . 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
, , From
Subject
, 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).
Gambar 2: Pengembang Dikirimi Pemberitahuan Email Setiap Kali Ada Pengecualian yang Tidak Tertangani
(Klik untuk melihat gambar ukuran penuh)
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).
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:
- ASP.NET Modul HTTP dan Gambaran Umum Penangan HTTP
- Menanggapi Pengecualian yang Tidak Tertangani dengan Baik - Memproses Pengecualian Yang Tidak Tertangani
HttpApplication
Kelas dan Objek Aplikasi ASP.NET- Handler HTTP dan Modul HTTP di ASP.NET
- Mengirim Email di ASP.NET
- Memahami
Global.asax
File - Menggunakan Modul dan Handler HTTP untuk Membuat Komponen ASP.NET yang Dapat Dicolokkan
- Bekerja dengan File ASP.NET
Global.asax
- Bekerja dengan
HttpApplication
Instans