ASP.NET mvc异常处理的方法

时间:2021-04-15 22:24:41

第一种:全局异常处理

 

1.首先常见保存异常的类(就是将异常信息写入到文件中去)

 
C# 代码    复制
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
public class LogManager
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
   {
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法       private string logFilePath = string.Empty;
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法       public LogManager(string logFilePath)
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 this.logFilePath = logFilePath; ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 FileInfo file = new FileInfo(logFilePath); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 if (!file.Exists) ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 file.Create().Close(); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 public void SaveLog(string message, DateTime writerTime) ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 string log = writerTime.ToString() + ":" + message; ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 StreamWriter sw = new StreamWriter(logFilePath, true); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 sw.WriteLine(log); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 sw.Close(); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法

 

2.编写一个异常的基类让其继承自controller类

 
C# 代码    复制
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
public class BaseExceptionController : Controller
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
   {
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法       protected override void OnException(ExceptionContext filterContext)
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 LogManager logManager = new LogManager(Server.MapPath("~/Exception.txt")); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 logManager.SaveLog(filterContext.Exception.Message, DateTime.Now); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 base.OnException(filterContext); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法

 

3.编写控制器,让其继承自上面的异常基类

 
C# 代码    复制
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
public class ExceptionController : BaseExceptionController
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
   {
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法       public ActionResult Index()
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 throw new Exception("我抛出异常了!");//这个是为了查看结果故意抛出的异常 ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法

 

通过上面的方式可以对整个控制器中的action都能进行异常的获取,但是这种方式不太灵活,那么就看第二种方式

 

第二种:控制器异常处理

 

这种方式就在需要进行异常处理的controller中重写OnException()方法即可,因为它本身继承了IExceptionFilter接口

 

 
C# 代码    复制
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
public class ExceptionController : Controller
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
   {
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法       public ActionResult Index()
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 throw new Exception("我抛出异常了!"); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 protected override void OnException(ExceptionContext filterContext) ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 string filePath = Server.MapPath("~/Exception。txt"); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 StreamWriter sw = System.IO.File.AppendText(filePath); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 sw.WriteLine(DateTime.Now.ToString() + ":" + filterContext.Exception.Message); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 sw.Close(); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 base.OnException(filterContext); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 Redirect("/"); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法

 

前面两种都是在controller中重写OnException方法,这样只要controller中又异常,那么就会被捕捉并被处理,但是如果我们要针对某个action使用异常处理呢?那么我们就要用到下面的过滤器异常处理来进行。

 

第三种:过滤器异常处理

 
C# 代码    复制
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
namespace MyMVC.Controllers
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
{
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法   public class ExceptionController : Controller
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 [Error] ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 public ActionResult Index() ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 throw new Exception("过滤器异常!"); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法} ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法public class ErrorAttribute : HandleErrorAttribute ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 public override void OnException(ExceptionContext filterContext) ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 base.OnException(filterContext); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 string path = filterContext.HttpContext.Server.MapPath("~/Exception.txt"); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 StreamWriter sw = System.IO.File.AppendText(path); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 sw.WriteLine(DateTime.Now.ToString()+":"+filterContext.Exception.Message); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 sw.Close(); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法} ASP.NET mvc异常处理的方法

 

第四种:路由异常处理

 
C# 代码    复制
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
//设置路由参数
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
routes.MapRoute("ErrorHandling", "{*str}", new { controller = "Exception", action = "Missing" });
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法//一定要放在所有配置的最下面、
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法public ActionResult Missing(string str)
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法{ ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 ViewData["ErrMsg"] = "您访问的页面出错了,"+str+" 时间:"+DateTime.Now.ToString(); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 return View(); ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法 } ASP.NET mvc异常处理的方法

 

第五种:动作异常处理

 

 
C# 代码    复制
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
//首先设置:
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
 <system.web>
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
   <customErrors mode="On">
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
     <error statusCode="404" redirect="/Exception/Missing"/>
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
   </customErrors>
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
 </system.web>
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
       public ActionResult Missing(string str)
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法
       {
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法           ViewData["ErrMsg"] = "您访问的页面出错了,"+str+" 时间:"+DateTime.Now.ToString();
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法           return View();
ASP.NET mvc异常处理的方法ASP.NET mvc异常处理的方法       }
ASP.NET mvc异常处理的方法

 http://www.studyofnet.com/news/317.html