我有一个会员资格例外,如下所示:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我应该在我的例外中使用枚举还是为每个枚举做一个例外?因为那时我会在捕获异常时使用逻辑:
try
{
}
catch (MembershipException exception)
{
switch (exception.MembershipError)
{
case MembershipError.EmailExists:
break;
//etc.
}
}
Run Code Online (Sandbox Code Playgroud)
我的服务层抛出这些异常,动作中的web层/捕获这些异常,生成正确的json并将其返回到视图.建议替代方案吗?
例外情况仅应用于特殊情况.枚举中列出的错误似乎是相当标准的,我会选择不通过异常来表达它们.相反,我更喜欢TryXXX样式API而不是异常.
例如
public bool TryGetMembershipData(
string user,
out Data data,
out MemberShipError error) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |