0

我对这个方法实际上如何处理传递给它的异常感到困惑,它似乎没有做任何额外的事情。

我将它放在我的代码的一部分中,因为它是我前几天查看的一个示例中使用的标准,但我发现它似乎吃掉了我的异常消息,所以我只剩下SoapServerException没有通用的内部异常。

// "Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown."
catch (Exception ex)
{
    throw SoapServerException.HandleException(exception);
}

// "Server was unable to process request. ---> Error in MyService.asmx ---> 
// Could not load file or assembly 'That.Assembly.I.Forgot' or one of its dependencies."
catch (Exception ex)
{
    throw new Exception("Error in MyService.asmx", ex);
}

有没有理由我应该抛出SoapServerException.HandleException()而不是我自己的更具描述性的异常?

4

1 回答 1

1

每: http: //msdn.microsoft.com/en-us/library/gg552614 (v=office.14).aspx#bestpractice_infodisc

出于安全原因,SoapServerException.HandleException() 旨在减少返回给用户的详细信息。所以这种行为是故意的。

此方法的文档:http: //msdn.microsoft.com/en-us/library/microsoft.sharepoint.soapserver.soapserverexception.handleexception.aspx

根本没有真正解释这种方法的作用,这是不幸的。如果您故意想向用户提供更多详细信息,那么您应该使用自己的异常。但要小心提供此类详细信息。出于安全原因,这可能不是一个好主意。这实际上取决于您对发送错误的一方的信任/了解程度。

-戴夫

于 2013-09-11T19:12:42.997 回答