как: обрабатывать исключения, лучшие практики
необходимо реализовать глобальную обработку ошибок, поэтому, возможно, вы можете помочь с помощью следующего примера ...
у меня есть этот код:
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
что-то другое??что делать, если случаются исключения?
в этом примере: это вход пользователя в систему, поэтому каким-то образом, даже если все не удается, пользователь должен получить какую-то значимую информацию в виде строк: войти в систему (просто перенаправить), войти не в порядке (неправильное имя пользователя / пароль), вход невозможен из-за внутренних проблем, извините (исключение произошло).
для первой функции я беспокоюсь, если есть проблема с доступом к базе данных. не уверен, есть ли что-то, что должно быть обработано во втором.
Спасибо за информацию. как бы ты это сделал? нужна конкретная информация по этому вопросу (для меня легче понять), а также общая информация о том, как выполнять другие задачи / функции.
Я посмотрел в Интернете, но у всех есть разные вещи, чтобы сказать, так что неуверенный, что делать ... пойдет или с большинством голосов здесь, или с наиболее логичным объясненным ответом :) спасибо.