Catel協助手冊-Catel.Core:(5)異常處理

來源:互聯網
上載者:User

標籤: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)異常處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.