首页 / C# / c# – 如何:处理异常,最佳实践
c# – 如何:处理异常,最佳实践
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何:处理异常,最佳实践,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2458字,纯文字阅读大概需要4分钟。
内容图文
![c# – 如何:处理异常,最佳实践](/upload/InfoBanner/zyjiaocheng/754/ce2e5a42dac34340a020544168f124bc.jpg)
需要实现全局错误处理,所以也许您可以帮助以下示例…
我有这个代码:
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页面调用.第二个只从类库中的其他函数调用.
什么是最佳做法?
>环绕代码INSIDE每个函数都有try-catch
>使用try-catch包围FUNCTION CALL
>别的什么?
异常发生时该怎么办?
在这个例子中:
这是一个用户登录,所以即使一切都失败了,用户也应该得到一些有意义的信息 – 按行:登录确定(只是重定向),登录不正常(用户名/密码错误),登录不可能由于内部问题,抱歉(发生异常).
对于第一个函数我担心如果数据库访问有问题.
不确定是否有任何需要在第二个处理.
thnx的信息.你会怎么做?
需要具体的信息(我更容易理解),还有关于如何处理其他任务/功能的一般信息.
我环顾了互联网,但是每个人都有不同的想法,所以不确定该做什么…会选择大多数选票,或大多数逻辑解释答案:)谢谢.
解决方法:
Your library code or the code that is
used by higher-layers in your
application must always only throw
exceptions and never worry about how
to deal with them.
这很重要,因为您可以在许多地方使用此库以用于不同目的.
在您的应用程序表示层中,如果您正在使用库代码并且您知道可能的异常,那么请使用try / catch捕获它们.
由于您使用的是asp.net,我建议您编写一个通用的基于页面的类,并在Page_Error事件中使用一些错误处理机制来捕获页面上所有未处理的异常.
除此之外,即使在global.asax中也可以使用Application_Error来捕获应用程序的任何部分,模块,处理程序,服务,页面等中的任何未处理的异常.
I’d strongly recommend to not make it
a general practice to handle all
exception in global Application_Error.
内容总结
以上是互联网集市为您收集整理的c# – 如何:处理异常,最佳实践全部内容,希望文章能够帮你解决c# – 如何:处理异常,最佳实践所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。