Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 处理WCF服务中DLL中生成的异常_.net_Wcf_Exception - Fatal编程技术网

.net 处理WCF服务中DLL中生成的异常

.net 处理WCF服务中DLL中生成的异常,.net,wcf,exception,.net,Wcf,Exception,我面临一个与WCF服务中的异常处理相关的问题。请任何人都能帮我 我的问题:- 我有WCF服务,我正在为移动应用程序开发。在我的WCF服务中,我有一个类库项目,其中有一个类a。在该类中,我定义了一个方法,该方法从webconfig文件的appsetting块(对于ex UserID)获取一些值 如果我忘了在webconfig中定义该设置,那么异常将出现在该方法的try-catch块中(这一步一切正常),但理想情况下,该异常也应该出现在相应WCF服务方法的catch块中,我将从该块调用该类A方法 我

我面临一个与WCF服务中的异常处理相关的问题。请任何人都能帮我

我的问题:-

我有WCF服务,我正在为移动应用程序开发。在我的WCF服务中,我有一个类库项目,其中有一个类a。在该类中,我定义了一个方法,该方法从webconfig文件的appsetting块(对于ex UserID)获取一些值

如果我忘了在webconfig中定义该设置,那么异常将出现在该方法的try-catch块中(这一步一切正常),但理想情况下,该异常也应该出现在相应WCF服务方法的catch块中,我将从该块调用该类A方法

我的情况不是这样的。我在下面提供 参考代码

用ClassA编写的代码(放在类库项目中)

在WCF服务中编写的代码:-

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
}