What
 does the user see when a runtime error occurs in an ASP.NET web
 application? The answer depends on how the website's <customErrors>
 configuration. By default, users are shown an unsightly yellow
 screen proclaiming that a runtime error has occurred. This tutorial
 shows how to customize  settings to handle
 runtime exceptions.
 We
will use two attributes to handle error in an MVC application
- customErrors attribute defined in web.config
 - HandleError attribute comes with default MVC Application
 
- Set custom errors mode to ON in web config.
 - From custom error we can set that where we can redirect a user when some exception occurs in our application.
 - Set defaultRedirect attribute'value & add a sub tag for 404 error. Values for defaultRediret and redirect are the URLs of the pages for default redirection when some error occurs.
 - Use HandleError filter attribute
 - The HandleError filter works only if the <customErrors> section is turned on in web.config.
 - HandleError attribute provided by MVC framework.
 - It handle only status code 500 errors. It does not handle 404 not found or other types of errors.
 - If you use both customError attribute in web.config & HandleError attribute and any internal server error (500) occurs then HandleError will override behaviour of customError attribute & will handle error with it's own way.
 
<!-- Custom Error Handling -->
<customErrors mode="On" defaultRedirect="~/Home/DefaultError">
<error statusCode="404" redirect="~/Home/Error404" />
</customErrors>
Example
  of  Controller level handling
[HandleError] public class HomeController : Controller { public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); } public ActionResult About() { return View(); } }
- You can use HandleError attribute at
 - Action Level – by adding this attribute on Action ex. [HandleError]
 - Controller Level - by adding this attribute on Controller ex. [HandleError]
 - Application Level - by registering filter in FilterConfig.cs in App_Start folder
 
     public
class
FilterConfig
   {
     public
static
void
RegisterGlobalFilters(GlobalFilterCollection
filters)
     {
     filters.Add(new
HandleErrorAttribute());
     }
    }
- When error occurs, this will redirect to a view which is in shared folder named 'Error'
 - You can change view name. ex. [HandleError(View = "DatabaseError")]
 - That's all
 - Redirection sequence of error handling
 - For ( 500 Internal server error)
 - Redirect to view of Handle Error Attribute
 - Redirect to Url defaultRedirect defined in customErrors tag in web.config. ( if Handle Error is not registered at any level)
 - For ( 404 or other types of errors)
 - Other url according to status code defined in customErrors tag.
 
    Note:
- Handle Error is an inbuilt Filter. We can use our own custom filter attribute by making a class which is derived from Filter Attribute & implements Iexception Filter interface.
 - To handle ajax request's exception. Visit the link given below.
 - For more detail about exception. Visit this link :