我正在编写一个返回不同类型错误的Web服务.
每种方法可以返回三种基本类型的错误之一:
General,InvalidInput或Non.
除了这三个可能的值之外,每个方法都可能有自己的错误(例如对于SignIn方法 - InvalidPassword) - 但每个方法只能返回一个错误.
因此,例如,SignIn方法将能够返回以下错误类型之一:General,InvalidInput,Non,InvalidPassword.
起初我想过使用枚举,但我现在认为错误类型应该实现继承,因为有基本的三种类型,并且每个新方法的错误类型都继承自那个......但我真的不能想到如何.我想过使用一个静态类 - 但是它只会有一个字符串静态字段 - 并且继承再次无关......
枚举的另一个问题是Web服务的客户端最终将得到的是无意义的int(通过json)
所以我的问题是:有什么方法可以传达这样的想法:有三个基本的可能值,你可以添加到那些新的错误类型?
如果您重新考虑接口,那将是最好的.
使用异常而不是错误代码要好得多,不仅因为它很容易忘记检查错误代码,还因为很难维护它们,使它们保持独特和有意义.
约翰·桑德斯指出类似的线程:
[...]你应该抛出一个
SoapException.这或多或少会直接转换为SOAP Fault.SOAP错误是指示Web服务操作错误的适当方式,原因与普通方法中异常优于返回状态的原因相同 - 您不必在调用时检查返回状态.
抛出SoapException你也可以抛出任意异常.ASP.NET会将这些异常包装到SoapException传递给客户端的异常中.客户端可以在内部异常中访问异常的详细信息SoapException.
有关进一步说明,请参阅: