Manoj Sharma
Manoj Sharma

Reputation: 23

Exception Handling in ASP.NET MVC 4, 5

I am using ASP.NET MVC 4

I want to trace or handle Exception globally.

1.Which is handled by user code?
2.Which is not handled by user code?

both the type

how is it possible ?

Upvotes: 0

Views: 1043

Answers (3)

Cleverguy25
Cleverguy25

Reputation: 503

http://www.codeguru.com/csharp/.net/net_asp/mvc/handling-errors-in-asp.net-mvc-applications.htm

Shows different ways of handling errors globally. Setting a global exception handling filter is the usual.

GlobalFilters.Filters.Add(new SpecialHandleErrorAttributeCreatedByYou());

You would derive a new Attribute from HandleErrorAttribute and put your logic in there, overriding the OnException method.

public override void OnException(ExceptionContext filterContext)

However this will not show you exceptions that are handled by other code. That is the point, they are handled so they do not continue to bubble up the stack. You would have to put code in each of those catch blocks to either do what you want.

Upvotes: 1

Preet Singh
Preet Singh

Reputation: 1861

Yes it is possible you can override. HandleErrorAttribute And register it globally

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(YourNewHandler());
...
}

Upvotes: 0

Dawid Rutkowski
Dawid Rutkowski

Reputation: 2756

Global error handling:

public class MvcApplication : System.Web.HttpApplication
{
        protected void Application_Error(object sender, EventArgs e)
        {
            Exception exception = Server.GetLastError();
            Server.ClearError();
            Response.Redirect("/Home/Error");
        }
}

Or override OnException method:

public class HomeController : Controller
{
    protected override void OnException(ExceptionContext filterContext)
    {
        Exception ex = filterContext.Exception;
        filterContext.ExceptionHandled = true;

        var model = new HandleErrorInfo(filterContext.Exception, "Controller","Action");

        filterContext.Result = new ViewResult()
        {
            ViewName = "Error",
            ViewData = new ViewDataDictionary(model)
        };
    }
}

Upvotes: 2

Related Questions