MVC异常处理

     本文详细介绍了几种异常处理的方法及其特点,包括使用局部try-catch-finally异常处理,控制器级异常处理,全局异常处理.

a.局部try-catch-finally异常处理

即直接在代码中使用try-catch语句

public ActionResult TestMethod()
{
    try
    {
        //....
        return View();
    }
    catch (Exception e)
    {
        //Handle Exception;
        return View("Error");
    }
    finally
   {
   }
}

局限:无法在多个Action中重用异常处理逻辑.


b.控制器级异常处理

在控制器中重写的OnException方法,加入异常处理.

        protected override void OnException(ExceptionContext filterContext)
        {
            Exception e = filterContext.Exception;
            //Log Exception e
            filterContext.ExceptionHandled = true;
            //ajax request exception handling
            if (filterContext.RequestContext.HttpContext.Request.IsAjaxRequest())
            {
                filterContext.Result = Json(new { errorOccurred = true, errorMessage = e.Message, JsonRequestBehavior = JsonRequestBehavior.AllowGet });
            }
            else
            {
                filterContext.Result = View("Error");
            }
        }

 优点:可以在同一控制器的不同Action中重用异常处理逻辑.如果在基类控制器重写该方法也可以实现全局的异常处理. 

局限:不能在不同的控制器的Action中重用异常处理逻辑,需要一个基类控制器来解决它的重用问题.


c.全局异常处理

使用HandleErrorAttribute来处理异常.略.










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值