Asp.Net Core Mvc - Exception Filtresi Yazmak

Asp.Net  Core Mvc -  Exception Filtresi Yazmak


Asp.Net Core Mvc ile gelen profesyonel olarak hata yakala tekniklerinden biriside 'Exception' filtresidir. Bu filtreyi kullanmak için projemize bir class ekliyoruz. Eklediğimiz class'ı 'ExeptionFilterAttribute' ten miras alarak kullanacağız. Ardından 'override' 'OnException' metodunu ekliyoruz.

 public class HandleExceptionAttribute : ExceptionFilterAttribute
    {
        public override void OnException(ExceptionContext context)
        {
           
        }
    }
Yukarıda görüldüğü üzere, 'HandleExceptionAttribute' isimli bir class'ımız var ve bu class 'ExceptionFilterAttribute' metodundan inherit (miras) almış durumda. Alt kısımda ise 'OnException' isimli metod 'override' edilmiş durumda.

Hata olması durumunda bize bir sonuç dönecek. Sonucu da bir 'view' de göstereceğiz. Bunun için 'View' klasöründe 'Error' isimli boş bir 'view' oluşturalım. Ardından aşağıdaki kodları 'HandleExceptionAttribute' class'ımıza yazalım.

 public class HandleExceptionAttribute : ExceptionFilterAttribute
    {
        public override void OnException(ExceptionContext context)
        {
            var result = new ViewResult { ViewName = "Error" };
            var modelDAta = new EmptyModelMetadataProvider();
            result.ViewData = new ViewDataDictionary(modelDAta, context.ModelState);
            result.ViewData.Add("HandleException", context.Exception);
            context.Result = result;
            context.ExceptionHandled = true;
        }
    }
Yukarıda görüldüğü gibi oluşturduğumuz 'View' in ismi 'Error'. Oluşturduğumuz 'view' içerisine ilgili kodları yazıyoruz.

@{
    Exception exception = ViewData["HandleException"] as Exception;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Error</title>
</head>
<body>
    <h1>
        @exception.Message
    </h1>
    <h1>@exception.StackTrace</h1>
</body>
</html>

Yorumlar

Bu blogdaki popüler yayınlar

Asp.Net ile Uyarı Mesajları Vermek (msgbox)

Asp.Net ile T.C. Kimlik Doğrulama (Mernis) Web Service ile

Asp.Net Eval Kullanımı