第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WCF下拋出FaultException異常讓客戶的捕獲的問題?

WCF下拋出FaultException異常讓客戶的捕獲的問題?

搖曳的薔薇 2018-12-07 12:00:04
? ? ? WCF下拋出FaultException異常讓客戶的捕獲的問題? 在做一個項目,我負責(zé)用Nhibernate寫DAL層服務(wù)并用WCF+IIS方式對外發(fā)布對于異常的處理WEB端同事說我這邊只有拋出FaultException他們才能捕獲到。 所以我現(xiàn)在的代碼結(jié)構(gòu)改為如下方式: using (ISession session = SessionFactory.OpenSession()){ using (ITransaction tx = session.BeginTransaction()) { try { ...//代碼塊 tx.Commit(); } Catch(FaultException<ErrorInfo> fex) //ErrorInfo是一個自定義的錯誤類 { tx.Rollback(); throw fex; } Catch(Exception ex) { tx.Rollback(); throw ex; } }} 現(xiàn)在我有幾個想不通的問題:1.我有兩個異常Catch,是不是只有我在TRY代碼塊里面主動拋出FaultException<ErrorInfo>,才能執(zhí)行Catch(FaultException<ErrorInfo> fex)的代碼?否則任何異常都是到Catch(Exception ex)里面去執(zhí)行?2.CATCH的作用是為了在異常發(fā)生后回滾此次事務(wù)操作,可以看到我寫了一句tx.Rollback();,但之后我又為了讓客戶端知道方法執(zhí)行失敗, 所以又拋出了異常,因為網(wǎng)上很多關(guān)于異常處理的都建議不要在異常里面再拋出異常,那有沒有比這更好的代碼寫法?3.既然是客戶端只接收FaultException異常,那如果執(zhí)行到Catch(Exception ex),是不是我需要在里面拋一個FaultException<ErrorInfo> 才行???
查看完整描述

3 回答

?
嗶嗶one

TA貢獻1854條經(jīng)驗 獲得超8個贊

在數(shù)據(jù)訪問層 拋出的異常不應(yīng)該用 FaultException 來封裝、只有需要把異常消息傳遞給 WCF 客戶端才需要把 異常封裝成FaultException。也就是說,你需要先在服務(wù)層捕獲所有的異常,并將需要傳遞給客戶端的異常封裝成 FaultException ,拋出;然后在客戶端捕獲異常。

為什么需要使用 FaultException 來封裝異常給客戶端呢、是因為 只有繼承自 FaultExeption 的異常才能夠傳送給客戶端、而其他 Exception 異常都會導(dǎo)致 WCF 通道因發(fā)生異常而無法傳遞任何消息。

查看完整回答
反對 回復(fù) 2019-01-21
?
九州編程

TA貢獻1785條經(jīng)驗 獲得超4個贊

把異常定義一個序列化的類,然后傳輸給client,處理一下就可以了

WCF的方法

public void DoNothing()
{
throw new FaultException<DataContracts.SomeError>(new DataContracts.SomeError()
{
Message
= "我是自定義異常信息"
});
}

客戶端方法

?

try
{
client.DoNothing();
}

catch (FaultException<DataContracts.SomeError> ex)
{

Console.WriteLine(
"捕獲到了自定義異常: {0}",ex.Detail.Message );
}
catch (FaultException ex)
{

Console.WriteLine(
"捕獲到了自定義異常: {0}", ex.CreateMessageFault().GetDetail<DataContracts.SomeError>().Message );
}
catch
{
Console.WriteLine(
"捕獲到了非自定義異常");
}
查看完整回答
反對 回復(fù) 2019-01-21
  • 3 回答
  • 0 關(guān)注
  • 431 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號