我有一个成员资格异常,如下所示:
public enum MembershipError
{
EmailNotFound,
EmailNotConfirmed,
IncorrectPassword,
EmailExists
}
public class MembershipException : ApplicationException
{
public MembershipError MembershipError { get; set; }
public MembershipException(MembershipError membershipError)
: base(Enum.GetName(typeof (MembershipError), membershipError))
{
MembershipError = membershipError;
}
}我应该在我的异常中使用枚举,还是为每个枚举创建一个异常?因为这样我就会在捕获异常时放入逻辑,如下所示:
try
{
}
catch (MembershipException exception)
{
switch (exception.MembershipError)
{
case MembershipError.EmailExists:
break;
//etc.
}
}我的服务层抛出这些异常,操作中的web层捕获这些异常,生成适当的json并将其返回给视图。请推荐一个替代方案好吗?
发布于 2011-01-25 02:01:42
异常应该仅用于异常情况。在您的枚举中列出的错误似乎是相当标准的,我选择不通过异常来表达它们。相反,我更喜欢TryXXX风格的应用程序接口而不是异常。
例如
public bool TryGetMembershipData(
string user,
out Data data,
out MemberShipError error) {
...
}发布于 2011-01-25 01:58:23
看起来您正在使用异常处理进行数据验证。这从一开始就是一个糟糕的设计。在进行最终注册之前,您应该分别执行这些验证检查。
发布于 2011-01-25 01:58:38
馊主意。异常通常只在“异常”情况下使用。你也会遇到性能问题。
https://stackoverflow.com/questions/4785316
复制相似问题