In this article, we will learn about the HandleError filter and discuss about the exception handling mechanisms that will fit to an MVC3 application. Exception handling is a serious issue in any application. Whether it's web or desktop. Implementing an appropriate exception handling is compulsory in every application. ASP.NET MVC3 comes with some built-in support for exception handling through exception filters. The HandleError attribute is the default built-in exception filter.
[HandleError] attributes that can be applied over an action or a controller or even at a global level. When you create a MVC3 application you will see the HandleErrorAttribute is added to the GlobalFiltersCollection in the Global.asax.cs which under the Global.asax.
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
Working of HandleError Attribute:-
The HandleError attribute handles the exceptions that are raised by the controller
actions, filters and views, it will return a custom view named Error.cshtml which is
placed in the Shared folder. The HandleError filter works only if
the <customErrors>section is turned On in web.config under the <system.web> tag.
Note:- HandleError Filter handles the exception while customErrors turn On in Web.config file by default customErrors isReadonly
Now write that code in HomeController.
public ActionResult Index()
ViewBag.Message = "Welcome to ASP.NET MVC!";
[HandleError(ExceptionType = typeof(DivideByZeroException), Master = "_Layout", View = "Error")]
public ActionResult About()
object obj = null;
str = obj.ToString();
[HandleError] attribute have four properties:-
1. ExceptionType:- The ExceptionType allows you to specify what
exception that attribute should handle
2. Master: - The Master allows you to manage which master page (or as
Razor refers to them, Layout) you desire to render.
3. Order: -
4. View: - The View allows you to specify which error view (page) you want
it to redirect to.
[HandleError(ExceptionType = typeof(DivideByZeroException), Master = "_Layout", Order = 1, View = "Error")]
This code will Generate the runtime exception “Object reference not set to an
instance of an object” when execute the About () action. [HandleError] attribute will
handle the error and call the Error.cshtml View which is under the Shared
Folder or Home Folder (created by user View).
ViewBag.Title = "Error";
Sorry, an error occurred as processing your request.
Now Run That Project and select the About Menu:-
After Run and select the About Menu you will see on URL bar call the “Home/About” but here is render the Error.cshtml View that the reason is raises Runtime Exceptions.