Home  >  Article  >  Backend Development  >  Problems and solution examples about MVC exception handling

Problems and solution examples about MVC exception handling

零下一度
零下一度Original
2017-06-15 13:45:511102browse

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();
    }
  }

Run it and let’s take a look at the result .

The above is the result of the operation. We can see that the System.Web.Mvc.HandleErrorInfo class still has many rich attributes, which we can use directly.

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 below


namespace Exception.Controllers
{
  public class SharedController : Controller
  {
    // GET: Shares
    public ActionResult Error()
    {
      return View();
    }

    public ActionResult NotFondError()
    {
      return View();
    }
  }
}

page:

Then we write a wrong address in the browser address and take a look at the result :

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 class

inherit System.Web.Mvc.HandleErrorInfo, and then override the virtual method in System.Web.Mvc.HandleErrorInfo: OnException method.


public class CustomHandleErrorAttribute : HandleErrorAttribute
  {
    public override void OnException(ExceptionContext filterContext)
    {
      base.OnException(filterContext);
      var err = filterContext.Exception.Message;//错误内容
      //=============================
      //将错误记录到日志中
      //=============================
    }
  }

Then, add FilterConfig.cs:


public class FilterConfig
  {
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
      filters.Add(new HandleErrorAttribute());
      filters.Add(new CustomHandleErrorAttribute());
    }
  }

In this way, we can complete our needs .

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn