>  기사  >  백엔드 개발  >  MVC 예외 처리에 대한 문제점 및 해결 방법 예

MVC 예외 처리에 대한 문제점 및 해결 방법 예

零下一度
零下一度원래의
2017-06-15 13:45:511102검색

이 글에서는 MVC예외 처리 관련 정보를 주로 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.

일상적인 개발 과정에서 우리는 일반적으로 많은 예외를 처리합니다. 방법은 예외 처리가 필요한 곳에 try catch 블록을 추가하는 것입니다. 그러나 예외 처리가 필요한 곳이 많으면 try catch 블록이 자주 작성될 것입니다. 이는 게으른 프로그래머에게는 항상 자연스러운 일입니다. 지름길. 따라서 전역 예외 처리가 있으므로 오늘은 MVC에서 전역 예외 처리를 수행하는 방법을 살펴보겠습니다.

1. MVCFramework자체 전역 예외 처리

MVC에서 프레임워크는 전역 예외 처리 기능 클래스 HandleErrorAttribute 클래스 세트를 제공합니다. MVC


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

의 App_Start 폴더에 있는 FilterConfig.cs 파일에서 이러한 코드 줄을 찾을 수 있습니다. 이는 HandleErrorAttribute 클래스를 인스턴스화하여 filter에 넣는 것입니다. 그러면 Views>Shared 폴더에 Error.cshtml 페이지가 있습니다. 이 페이지의 Model 유형은 System.Web.Mvc.HandleErrorInfo입니다. 이는 MVC 프레임워크에서 이미 작성한 것입니다. 곧장.

Error.cshtml 페이지에서 추가 처리를 수행하여 오류 정보를 표시하고 필요에 따라 오류 정보를 표시할 수 있습니다. 이러한 오류 메시지는 System.Web.Mvc.HandleErrorInfo 클래스의 특정 properties에서 찾을 수 있습니다.

예: 다음은 Error.cshtml입니다.

우리는 의도적으로 Control에 예외를 작성했습니다:


public class HomeController : Controller
  {
    public ActionResult Index()
    {
      string i = "12a";
      int j = Convert.ToInt32(i);
      return View();
    }
  }

실행하고 결과를 살펴보겠습니다.

위는 작업 결과입니다. System.Web.Mvc.HandleErrorInfo 클래스에는 여전히 직접 사용할 수 있는 풍부한 속성이 많이 있습니다.

MVC의 자체 예외 처리 세트는 기본적으로 500 시리즈의 오류 코드가 있는 예외 처리를 수행하지 않습니다. 그러나 Web.config 파일의 설정을 통해 이를 처리할 수 있습니다. 우리가 어떻게 처리하는지 살펴보세요.

먼저 Error.cshtml 페이지를 완성하고 여기에 컨트롤을 추가한 다음 404를 처리하기 위해 특별히 뷰와 컨트롤을 작성합니다. 다음과 같이


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

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

페이지:

그런 다음 브라우저 주소에 잘못된 주소를 쓰고 결과를 확인합니다.

2. MVC에서 예외 처리를 다시 작성

개발 중에 우리는 그런 요구 사항이 종종 있는데, 텍스트 로그를 통해 예외를 기록하고 저장해야 합니다. 그러면 MVC의 자체 예외 처리 방법인 System.Web.Mvc.HandleErrorInfo에는 이러한 기능이 없으므로 이 기능을 갖도록 다시 작성합니다. 다음으로 다시 작성하는 방법을 살펴보겠습니다.

먼저 클래스를 빌드하고 이 클래스가 System.Web.Mvc.HandleErrorInfo를 상속받도록 한 다음 System.Web.Mvc.HandleErrorInfo: OnException 메서드에서 가상 메서드를 재정의합니다.


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

그런 다음 FilterConfig.cs를 추가하세요.


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

이런 식으로 요구 사항을 완료할 수 있습니다.

위 내용은 MVC 예외 처리에 대한 문제점 및 해결 방법 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.