码迷,mamicode.com
首页 > 其他好文 > 详细

Catel帮助手册-Catel.Core:(5)异常处理

时间:2014-09-02 13:57:24      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   使用   ar   div   代码   log   

 

在Catel中使用异常处理时,创建一个异常处理策略和执行代码是安全的,不需要人工检查所有的异常类型,Catel通过IExceptionService方法来处理这个技术。

 

1,设置IExceptionService

     注册一个异常到服务中让Calte知道他如何被获取,是很重要的,服务会处理加入到IExceptionService中的异常。

     下面是注册一些异常以及他们如何被获取的例子,当FileNotFoundException异常发送时,它会给用户显示消息,对于其他的异常,他将会记录异常然后显示一个消息给用户,让其去联系开发者。

var dependencyResolver = this.GetDependencyResolver();
var exceptionService = dependencyResolver .Resolve<IExceptionService>();
 
exceptionService.Register<FileNotFoundException>(exception => dependencyResolver.Resolve<IMessageService>().Show(exception.Message));
exceptionService.Register<Exception>(exception => 
{
    Log.Error(exception);
    dependencyResolver.Resolve<IMessageService>().Show("An unknown exception occurred, please contact the developers");
});

 

注意:IExceptionService会检查类型层次,例如,当一个异常类型作为类型异常注册了,会处理所有同类型的异常。

2,使用IExceptionService来执行代码

进程方法跟踪所有注册的异常,当他们发生的时候来处理他们,如果你注册的异常时抛出代码,Process方法将将作为处理动作执行它(例如,显示一个对话框),Process方法可以用两种方式实现,作为动作或者作为函数。

2.1作为动作执行

 

var dependencyResolver = this.GetDependencyResolver();
var exceptionService = dependencyResolver.Resolve<IExceptionService>();
exceptionService.Process(() => { throw new ArgumentOutOfRangeException(); });

2.2 作为函数执行

var dependencyResolver = this.GetDependencyResolver();
var exceptionService = dependencyResolver.Resolve<IExceptionService>();
var result = exceptionService.Process<int>(() => 1 + 1);

3,决定异常类型是否注册执行

     如果你需要知道异常类型是否已经注册到了IExceptionSerivce中,你可以使用IsExceptionRegIsteredmethod方法来确定。

var dependencyResolver = this.GetDependencyResolver();
var exceptionService = dependencyResolver.Resolve<IExceptionService>();
if (exceptionService.IsExceptionRegistered<ArgumentNullException>())

{
//Do something
}

4,获取一个特定的异常

如果你需要获取某个注册的异常类型的实现,你需要通过GetHandler方法来获取

var dependencyResolver = this.GetDependencyResolver();
var exceptionService = dependencyResolver.Resolve<IExceptionService>();
var exceptionHandler = exceptionService.GetHandler<ArgumentException>();

 

 

Catel帮助手册-Catel.Core:(5)异常处理

标签:style   blog   color   io   使用   ar   div   代码   log   

原文地址:http://www.cnblogs.com/kylix1981/p/3951201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!