【发布时间】:2015-06-04 23:52:55
【问题描述】:
我有一个 WCF 服务,在我的一种方法中,我试图抛出一个显式的 FaultException。这个抛出被我的 catch 语句捕获,我的目的是检查异常是否属于我的显式类型,如果是则重新抛出。调试器显示这正在成功发生,但也会在 else 之后抛出新的 FaultException。它是发送给我的客户的通用 FaultException。我无法解释这种行为?
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 通常用于指示某种连接问题或类似情况。
-
不使用调试器时,代码是否能正常运行?
-
@Servy 起初我认为它没有,但看起来你可能已经击中了它的头部。调试器似乎命中了两个断点,但我收到了明确的 FaultException?