繁体   English   中英

WCF服务失败,如果在catch语句(异常)

[英]WCF Service Falling Through if Statement in catch(Exception ex)

我有一个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?
}

不幸的是,catch块中的“ if语句”不起作用。 您必须使用如下所示。

不管是否有if语句,都会抛出每个throw语句。

try {
    tryStatements
}
catch(FaultException<ValidateStatusFault> faultException){ 
    catchStatements
}
catch(Exception ex)
{
  throw new FaultException(ex.Message); 
}
finally {
    finallyStatements
}

您无需明确地执行此检查。 您可以有2个不同的异常捕获,过滤将为您完成。

try
{
}
catch (FaultException<ValidateStatusFault> faultException)
{
        throw; // I reach this breakpoint successfully.

}
catch(Exception ex)
{
  throw new FaultException(ex.Message); 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM