This article mainly introduces the relevant information of MVCException handling in detail, which has certain reference value. Interested friends can refer to it
In daily development, we will catch a lot of exceptions for processing. Usually our method is to add try catch blocks where exception handling is needed. However, if there are many places where exception handling is needed, then, We will frequently write try catch blocks. For us programmers who are naturally 'lazy', we always want to find a shortcut. Therefore, there will be global exception handling. So, today, we will take a look at how to perform global exception handling in MVC.
1. MVCFrameworkMy own global exception handling
In MVC, the framework has given us a set of global exception handling features. Class HandleErrorAttribute class. We can find such a line of code in the FilterConfig.cs file in the App_Start folder in MVC
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); }
This is to instantiate a HandleErrorAttribute class and put it into filter in . Then there is an Error.cshtml page in our Views>Shared folder. The type of Model in this page is System.Web.Mvc.HandleErrorInfo. This is what the MVC framework has already written for me. Yes, we can use it directly.
In the Error.cshtml page, we can do further processing to display error information and display error information according to needs. These error messages will be found in certain properties in the System.Web.Mvc.HandleErrorInfo class.
For example: the following is Error.cshtml.
We deliberately write an exception in Control:
##
public class HomeController : Controller { public ActionResult Index() { string i = "12a"; int j = Convert.ToInt32(i); return View(); } }
The exception handling that comes with MVC defaults to handling exceptions with error codes in the 500 series. If it is 404, this will not be done. However, we can handle it through the settings of the Web.config file. See how we handle it.
First, we complete the Error.cshtml page, add a Control to it, and then write a View and Control specifically to handle 404. As shown belownamespace Exception.Controllers { public class SharedController : Controller { // GET: Shares public ActionResult Error() { return View(); } public ActionResult NotFondError() { return View(); } } }
2. Rewrite exception handling in MVC
In development, we often have such a requirement, we need Record and save exceptions through text logs. Then MVC's own exception handling method System.Web.Mvc.HandleErrorInfo does not have such a function, so we rewrite it to make it have this function. Next, let's look at how to rewrite it. First we build a class, let this classpublic class CustomHandleErrorAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); var err = filterContext.Exception.Message;//错误内容 //============================= //将错误记录到日志中 //============================= } }
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new CustomHandleErrorAttribute()); } }
The above is the detailed content of Problems and solution examples about MVC exception handling. For more information, please follow other related articles on the PHP Chinese website!