Cara Ambil Error Message (Termasuk InnerException) C#

Program yang baik adalah program yang dapat menghandle error-error yang terjadi saat runtime. Hingga saat ini, aku masih belum bisa membuat program yang secanggih itu. Error handling yang aku lakukan hanya sebatas melemparkan pesan error ke sebuah message box. Kalau aplikasi ASP.Net, ya dilemparkan ke TempData, yang kemudian ditampilkan melalui box Alert. twisted

Masalahnya adalah terkadang detail pesan error yang bermanfaat itu tersedia pada error yang lebih dalam, atau istilah pemrogramannya InnerException, seperti pada gambar berikut:

ReportViewer error SetParameter ketika menggunakan Dynamic Report

Bila kita langsung mengambil pesan error dari Exception terluar, maka biasanya hanya akan tersedia pesan error seperti: “An error occured while updating the entries. See the inner exception for details.”, sebuah pesan error yang gak jelas, gak berguna, gak ada manfaatnya, hasyah. tongue

Nah, untuk masalah ini, aku menggunakan kode snippet ini:

public static class ExtensionMethod
{
    public static string GetMessage(this Exception ex)
    {
        while (ex.InnerException != null)
        {
            ex = ex.InnerException;
        }
        return ex.Message;
    }
}

Berikut contoh penggunaannya pada ASP.Net MVC:

try
{
    // proses data
}
catch (Exception ex)
{
    // error? tampung data di TempData dan redirect ke halaman index
    // error akan ditampilkan di alert box pada view
    TempData.Add(Alerts.DANGER, ex.GetMessage());
    return RedirectToAction("Index");
}

Semoga Bermanfaat. Tetap Sehat, Tetap Semangat, agar dapat Tetap dalam Perdjoeangan!!

Hartadi

I'm a Passionate Programmer ;)

Leave a Reply