我有一个WCF服务,在我尝试抛出一个显式的FaultException的方法之一。这个抛出被我的catch语句捕获,我的意图是检查异常是否是我的显式类型,如果是这样抛出。调试器显示这种情况已成功发生,但也会引发在else之后发现的新FaultException。这是通用的FaultException发送到我的客户端。我无法解释这种行为?WCF服务通过if语句捕获(Exception ex)
try
{
using (var db = new DataContext())
{
var obj = GetSomeObject(objectId, db);
if (!obj.Conditional)
throw new FaultException<ValidateStatusFault>(new ValidateStatusFault { Details = "Object '" + obj.Id + "' has not been some condition.", Issue = "Object '" + obj.Id + "' cannot be validated." });
// Additional checks.
}
}
catch (Exception ex)
{
if (ex is FaultException<ValidateStatusFault>)
throw; // I reach this breakpoint successfully.
else
throw new FaultException(ex.Message); // I also reach this breakpoint?
}
为什么在使用中抛出一个FaultException? FaultException通常用于指示某种连接问题或类似的情况。 – CoderForHire 2015-03-31 15:19:38
不使用调试器时,它的代码功能应该如何? – Servy 2015-03-31 15:27:55
@Servy起初我以为它没有,但似乎你可能已经击中了它的头。看起来调试器命中两个断点,但我收到显式的FaultException? – 2015-03-31 15:36:11