将异常从我的服务中抛回客户端是否可以?

S L*_*ong 10 c# java service exception-handling exception

我正在使用WSDL编写一个基于Java的服务供.Net客户端使用,我认为当我从客户端收到一个无效值时,我会抛出一个异常,然后我的客户端可以捕获并显示在消息框中对用户(客户端是桌面应用程序).

我想知道是否可以使用这种方法或者是否有更好的方法.

duf*_*ymo 9

我会说"不".错误消息等,但我不会序列化异常.你不知道客户是谁,也不知道他们写的是什么语言.

该服务应该处理异常:捕获它,记录它,并创建一个合理的错误消息和状态代码.在我看来,这不是例外的地方.

当我说"明智的错误消息"时,我并不是指任何类似堆栈跟踪的东西.这些可能是商业客户,他们不应该阅读这些东西.商业上有意义的消息是此处的票证,而不是堆栈跟踪.

  • @duffymo:我同意大多数这些观点,但我想在服务中说,通过API返回一个已消毒的异常是很好的.捕获真正的异常,记录它,使用已清理的消息返回新的异常,并且没有实际的堆栈跟踪. (3认同)

KP.*_*KP. 8

.NET通常在WCF中处理FaultExceptions(包装的SOAP错误).我假设如果你抛出一个正确的SOAP Fault,那么当客户端使用响应时,WCF会将它包装成FaultException,因此他们可以使用try catch FaultException语句.这仍然允许其他非.NET客户端在不违反标准的情况下使用该服务.

无论如何只是一个想法......