gpt4 book ai didi

c# - 返回值、错误和状态代码

转载 作者:行者123 更新时间:2023-11-30 14:00:58 25 4
gpt4 key购买 nike

我正在反对古老的返回码与异常辩论,并且可以针对具体示例提出一些建议。

我有一个简单的方法 Authenticate,它接受您的典型用户名、密码并在成功时返回 session key ,否则返回失败原因。像这样的东西:

Guid Authenticate(string username, string password)

虽然失败原因不会显示给用户,但我想将其向上传递,以便他们可以采取适当的措施。

我认为可能的回答分为三组:
1.成功
2. 预期/常见故障,例如密码/用户无效,帐户已锁定
3. 异常/意外故障/异常,例如数据库连接失败等

我很高兴通过返回一个有效的 guid 指示 1,通过冒泡的异常指示 3,但是我应该为 2 做什么?

我正逐渐走向异常(exception),但我不确定像密码不正确这样常见的情况(50% 的情况下可能会发生)应该这样做吗?备选方案返回某种复杂的返回状态对象(如果成功则包括 guid)或 out 参数??

最佳答案

尝试使用模式 Do()/TryDo() 以获得更好的 API 灵 active 。因此使用此 API 的客户端(类、服务等)将有以下选项:

应用程序接口(interface):

// Throw in case of error with AuthenticateExceptionEventArgs 
// contains information regarding error context
Guid Authenticate(string name, string password);

// Returns a status of operation, does not throw in case of error
AuthenticateStatus TryAuthenticate(string name, string password, out Guid guid);

需要以下基础设施类型:

enum AuthenticateStatus
{
Success,
InvalidPassword
}

class AuthenticateExceptionEventArgs : EventArgs
{
public AuthenticateStatus Status { get; private set; }
}

关于c# - 返回值、错误和状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9429974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com