.net 处理WCF服务中DLL中生成的异常
我面临一个与WCF服务中的异常处理相关的问题。请任何人都能帮我 我的问题:- 我有WCF服务,我正在为移动应用程序开发。在我的WCF服务中,我有一个类库项目,其中有一个类a。在该类中,我定义了一个方法,该方法从webconfig文件的appsetting块(对于ex UserID)获取一些值 如果我忘了在webconfig中定义该设置,那么异常将出现在该方法的try-catch块中(这一步一切正常),但理想情况下,该异常也应该出现在相应WCF服务方法的catch块中,我将从该块调用该类A方法 我的情况不是这样的。我在下面提供 参考代码 用ClassA编写的代码(放在类库项目中) 在WCF服务中编写的代码:-.net 处理WCF服务中DLL中生成的异常,.net,wcf,exception,.net,Wcf,Exception,我面临一个与WCF服务中的异常处理相关的问题。请任何人都能帮我 我的问题:- 我有WCF服务,我正在为移动应用程序开发。在我的WCF服务中,我有一个类库项目,其中有一个类a。在该类中,我定义了一个方法,该方法从webconfig文件的appsetting块(对于ex UserID)获取一些值 如果我忘了在webconfig中定义该设置,那么异常将出现在该方法的try-catch块中(这一步一切正常),但理想情况下,该异常也应该出现在相应WCF服务方法的catch块中,我将从该块调用该类A方法 我
try
{
ClassA.Method();
}
catch (Exception e2)
{
}
在上面的代码中,如果我忘记在webconfig文件中定义UserID设置,那么异常也应该出现在WCF服务方法的catch块中,但它不会出现。我不确定为什么它不会出现在WCF代码中,但使用
throw e1
会丢失错误的堆栈跟踪,这通常被认为是一件坏事
老实说,我认为您使用try-catch块的原因是错误的。如果没有所有try-catch代码,您可以轻松地检查返回的值,看看它是空的还是空的ConfigurationManager.AppSettings
返回一个字符串-调用.ToString()
,该字符串为redudant(但如果该项不存在,则会出现空引用异常)
我会这样重写您的代码:
public static string Method()
{
return ConfigurationManager.AppSettings["UserID"];
}
然后在您的WCF代码中:
string userID = ClassA.Method();
if (String.IsNullOrEmpty(userID))
{
// Do something with the error here
}
谢谢你,蒂姆。我试试这个,看起来不错。
string userID = ClassA.Method();
if (String.IsNullOrEmpty(userID))
{
// Do something with the error here
}