首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是使用异常的正确方式吗?

这是使用异常的正确方式吗?
EN

Stack Overflow用户
提问于 2011-01-25 01:56:34
回答 5查看 180关注 0票数 2

我有一个成员资格异常,如下所示:

代码语言:javascript
复制
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;
    }
}

我应该在我的异常中使用枚举,还是为每个枚举创建一个异常?因为这样我就会在捕获异常时放入逻辑,如下所示:

代码语言:javascript
复制
try
{

}
catch (MembershipException exception)
{
    switch (exception.MembershipError)
    {
        case MembershipError.EmailExists:

            break;
            //etc.
    }
}

我的服务层抛出这些异常,操作中的web层捕获这些异常,生成适当的json并将其返回给视图。请推荐一个替代方案好吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-25 02:01:42

异常应该仅用于异常情况。在您的枚举中列出的错误似乎是相当标准的,我选择不通过异常来表达它们。相反,我更喜欢TryXXX风格的应用程序接口而不是异常。

例如

代码语言:javascript
复制
public bool TryGetMembershipData(
  string user, 
  out Data data, 
  out MemberShipError error) {
  ...
}
票数 5
EN

Stack Overflow用户

发布于 2011-01-25 01:58:23

看起来您正在使用异常处理进行数据验证。这从一开始就是一个糟糕的设计。在进行最终注册之前,您应该分别执行这些验证检查。

票数 3
EN

Stack Overflow用户

发布于 2011-01-25 01:58:38

馊主意。异常通常只在“异常”情况下使用。你也会遇到性能问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4785316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档