>백엔드 개발 >C#.Net 튜토리얼 >MVC 예외 관련 처리

MVC 예외 관련 처리

巴扎黑
巴扎黑원래의
2017-08-08 13:18:151777검색

이 글에서는 주로 MVC 예외 처리 관련 정보를 자세히 소개하며, 이는 특정 참고 가치가 있습니다. 관심 있는 친구들이 참고할 수 있습니다.

일상적인 개발에서 우리는 처리를 위해 많은 예외를 포착할 것입니다. 일반적으로 우리의 방법은 try를 추가하는 것입니다. 예외 처리가 필요한 곳은 catch 블록입니다. 그러나 예외 처리가 필요한 곳이 많으면 try catch 블록이 자주 작성됩니다. 우리는 본질적으로 '게으른' 프로그램을 위해 중국 공산당의 일원으로서 항상 지름길을 찾아보세요. 따라서 전역 예외 처리가 있으므로 오늘은 MVC에서 전역 예외 처리를 수행하는 방법을 살펴보겠습니다.

1. MVC 프레임워크 고유의 전역 예외 처리

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


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

의 App_Start 폴더에 있는 FilterConfig.cs 파일에서 이러한 코드 줄을 찾을 수 있습니다. 이는 HandleErrorAttribute 클래스를 인스턴스화하여 필터에 넣는 것입니다. 그런 다음 Views>Shared 폴더에 Error.cshtml 페이지가 있습니다. 이 페이지의 모델 유형은 System.Web.Mvc.HandleErrorInfo입니다. 이는 MVC 프레임워크에서 직접 사용할 수 있습니다.

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

예: 다음은 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으로 문의하세요.