這里所說的錯(cuò)誤處理主要是指服務(wù)代碼中拋出的異常,即開發(fā)人員主動(dòng)拋出的錯(cuò)誤當(dāng)然,由于網(wǎng)絡(luò)問題或者配置不正確,會(huì)引發(fā)連接超時(shí)的錯(cuò)誤,但這里老周要說的是,我們?cè)趯?shí)現(xiàn)服務(wù)邏輯時(shí)主動(dòng)拋出的異常,尤其是對(duì)客戶端傳入的參數(shù)的驗(yàn)證上面。
WCF的異常信息一般會(huì)通過 FaultException 類來包裝。理論和概念性的東西,大家可以去查資料,老周向來不喜歡談那些,下面咱們通過實(shí)例來了解一下 FaultException。
定義服務(wù)協(xié)定。
[ServiceContract(Namespace = "demo-app")] public interface IOrder { [OperationContract] bool NewOrder(DateTime date, decimal price, long q); }
假設(shè)這個(gè)服務(wù)的功能是用來下單的,當(dāng)然不是真的實(shí)現(xiàn)下單功能,因?yàn)槟菢犹珡?fù)雜,也不是本文的重點(diǎn),這里老周安排了三個(gè)參數(shù),分別表示下單日期,商品單價(jià),以及商品數(shù)量。
下面,咱們來實(shí)現(xiàn)一下這個(gè)協(xié)定。
internal class OrderSvr : IOrder { public