什么是枚举的好替代品?

时间:2010-09-29 21:56:47

标签: c#

我正在编写一个返回不同类型错误的Web服务 每种方法都可以返回三种基本类型的错误之一:
GeneralInvalidInputNon 除了这三个可能的值之外,每个方法都有自己的错误(例如对于SignIn方法 - InvalidPassword) - 但每个方法只能返回一个错误。
例如,SignIn方法将能够返回以下错误类型之一:General,InvalidInput,Non,InvalidPassword。
起初我想过使用枚举,但我现在认为错误类型应该实现继承,因为有基本的三种类型,并且每个新方法的错误类型都从那继承。但我真的不能想到如何。我想过使用一个静态类 - 但是它只会有一个字符串静态字段 - 并且继承再次无关紧要...
枚举的另一个问题是,Web服务的客户端最终将得到的是无意义的int(通过json)

所以我的问题是:有什么方法可以表达出有三个基本可能值的想法,你可以添加它们来制造新类型的错误吗?

1 个答案:

答案 0 :(得分:6)

如果您重新考虑接口,那将是最好的。

使用异常而不是错误代码要好得多,不仅因为它很容易忘记检查错误代码,还因为很难维护它们,使它们保持唯一和有意义。

John Saunders states在一个类似的主题中:

  

[...]你应该抛出一个SoapException。这或多或少会直接转换为SOAP Fault。 SOAP错误是指示Web服务操作错误的适当方式,原因与异常优于普通方法中的返回状态相同 - 您不必在调用时检查返回状态。 / p>

除了抛出SoapException之外,您还可能抛出任意异常。 ASP.NET会将这些异常包装到传递给客户端的SoapException中。客户端可以在SoapException

的内部异常中访问异常的详细信息

有关进一步说明,请参阅:

  

<强> Handling and Throwing Exceptions in XML Web Services