首页 > 代码库 > Catel帮助手册-Catel.Core:(5)异常处理
Catel帮助手册-Catel.Core:(5)异常处理
在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)异常处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。