c# – 最佳实践返回值vs异常与枚举
发布时间:2020-12-15 18:00:03 所属栏目:百科 来源:网络整理
导读:我试图找出具有多个结果值的方法的优点和缺点. 例如我正在使用登录方法.如果登录成功,它将通过,否则我需要知道为什么它失败. 1.返回true或false(没有足够的信息) bool Login(string user,string password); 2.返回true,如果成功,否则抛出异常 public class U
我试图找出具有多个结果值的方法的优点和缺点.
例如我正在使用登录方法.如果登录成功,它将通过,否则我需要知道为什么它失败. 1.返回true或false(没有足够的信息) bool Login(string user,string password); 2.返回true,如果成功,否则抛出异常 public class UnknownUserException : Exception { } public class WrongPasswordException : Exception { } bool Login(string user,string password); 没有回报抛出异常,如果不成功 public class UnknownUserException : Exception { } public class WrongPasswordException : Exception { } void Login(string user,string password); 4.返回一个枚举值 enum LoginResult { Successful UnknownUser,WrongPassword } LoginResult Login(string user,string password); “登录”只是一个例子.我想知道不同实现的优点和缺点是什么,在哪种情况下,它们或多或少是适当的. 解决方法
你会得到更多的有意见的答案,如果我在做,我会结合3& 4.用一个枚举来抛出LoginFailedException为什么.
void Login(string user,string password);//Or return a bool(redundant though) class LoginFailedException : ApplicationException { public LoginFailReason Reason {get; private set;} public LoginFailedException(LoginFailReason reason) { this.Reason = reason; } } enum LoginFailReason { UnknownUser,WrongPassword } 选择异常选项的原因: instance.Login(user,password); var accountInfo = instance.GetAccountInfo();//Assuming logged in; going to explode 谁知道他们必须这样做 if(instance.Login(user,password) == LoginResult.Successful)) { var accountInfo = instance.GetAccountInfo(); } 所以,IMO抛出异常表示我无法处理你的登录请求由于这样的原因.使简单 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |