gpt4 book ai didi

c# - 如何 : handle exceptions, 最佳实践

转载 作者:行者123 更新时间:2023-11-30 13:42:29 24 4
gpt4 key购买 nike

需要实现一个全局错误处理,所以也许你可以帮助解决以下示例...

我有这个代码:

public bool IsUserAuthorizedToSignIn(string userEMailAddress, string userPassword)
{
// get MD5 hash for use in the LINQ query
string passwordSaltedHash = this.PasswordSaltedHash(userEMailAddress, userPassword);

// check for email / password / validity
using (UserManagementDataContext context = new UserManagementDataContext())
{
var users = from u in context.Users
where u.UserEMailAdresses.Any(e => e.EMailAddress == userEMailAddress)
&& u.UserPasswords.Any(p => p.PasswordSaltedHash == passwordSaltedHash)
&& u.IsActive == true
select u;

// true if user found
return (users.Count() == 1) ? true : false;
}
}

还有 md5:

private string PasswordSaltedHash(string userEMailAddress, string userPassword)
{
MD5 hasher = MD5.Create();
byte[] data = hasher.ComputeHash(Encoding.Default.GetBytes(userPassword + userEMailAddress));

StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
stringBuilder.Append(data[i].ToString("x2"));
}

Trace.WriteLine(String.Empty);
Trace.WriteLine("hash: " + stringBuilder.ToString());
return stringBuilder.ToString();
}

那么,我将如何处理这些函数的异常?他们第一个是从 Default.aspx 页面调用的。第二个仅从类库中的其他函数调用。

什么是最佳实践?

  • try-catch 在每个函数内环绕代码
  • try-catch包围函数调用
  • 还有别的吗??

如果出现异常怎么办?

在这个例子中:这是一个用户登录,所以即使一切都失败了,用户也应该得到一些有意义的信息——大致如下:登录正常(只是重定向),登录不正常(用户名/密码错误),登录不可能由于内部问题,抱歉(发生异常)。

对于第一个函数,我担心数据库访问是否有问题。不知道第二个有没有什么需要处理的。

感谢信息。你会怎么做?需要这方面的具体信息(对我来说更容易理解),还需要有关如何处理其他任务/功能的一般信息。

我环顾了互联网,但每个人都有不同的话要说,所以不确定该怎么做...要么在这里获得最多的选票,要么选择最合乎逻辑的解释答案:)谢谢。

最佳答案

两条黄金法则:

  1. 如果一个方法不能像它的名字所说的那样做,则抛出一个异常。
  2. 除非您确切知道如何处理它们,否则不要捕获异常。

请记住,异常表明出现了错误,而特定的错误可能与您的想法不同。 (内存不足、堆栈溢出、第 3 方服务中断、部署失败导致程序集丢失、配置错误、安全异常等)。

除了极少数异常(exception),您唯一应该看到 Pokemon 异常处理的地方是代码的最顶层,异常应该在某处发布。例如,在 global.asax 文件的 Application_Error 方法中。

以下是一些可能对您有帮助的链接:

关于c# - 如何 : handle exceptions, 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2934618/

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