/// <summary> /// add节点 /// </summary> public class AddElement : ConfigurationElement { [ConfigurationProperty("view")] public string View { get { return base["view"] as string; } } [ConfigurationProperty("handler")] public string Handler { get { return base["handler"] as string; } } [ConfigurationProperty("exception", IsRequired = true)] public string Exception { get { return base["exception"] as string; } } }
三、测试
ok,下面测试一下,首先要在FilterConfig的RegisterGlobalFilters方法中在,HandlerErrorAttribute前注册我们的过滤器:
filters.Add(new SettingHandleErrorFilter())。
3.1 准备异常对象
准备几个简单的异常对象:
public class PasswordErrorException : Exception{} public class UserNameEmptyException : Exception{} public class EmailEmptyException : Exception{}
3.2 准备Handler
针对上面的异常,我们准备两个Handler,一个处理密码错误异常,一个处理空异常。这里没有实际处理代码,具体怎么处理,应该结合具体业务了。如:
public class PasswordErrorExceptionHandler : IExceptionHandler { public bool HasHandled{get;set;} public void Handle(Exception ex) { //具体处理逻辑... } } public class EmptyExceptionHandler : IExceptionHandler { public bool HasHandled { get; set; } public void Handle(Exception ex) { //具体处理逻辑... } }
3.3 抛出异常
按照上面的配置,我们在Action中手动throw异常
public ActionResult Index() { throw new PasswordErrorException(); } public ActionResult Index2() { throw new UserNameEmptyException(); } public ActionResult Index3() { throw new EmailEmptyException(); }
可以看到,相应的Handler会被执行,浏览器也会出现我们配置的错误页面。
四、总结
事实上这只是一个比较简单的例子,所以我称它为简单的模块,而是用框架、库之类的词。当然我们可以根据实际情况对它进行扩展和优化。微软企业库视乎也集成这样的模块,有兴趣的朋友可以了解一下。
您可能感兴趣的文章: