как: обрабатывать исключения, лучшие практики

необходимо реализовать глобальную обработку ошибок, поэтому, возможно, вы можете помочь с помощью следующего примера ...

у меня есть этот код:

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что-то другое??

что делать, если случаются исключения?

в этом примере: это вход пользователя в систему, поэтому каким-то образом, даже если все не удается, пользователь должен получить какую-то значимую информацию в виде строк: войти в систему (просто перенаправить), войти не в порядке (неправильное имя пользователя / пароль), вход невозможен из-за внутренних проблем, извините (исключение произошло).

для первой функции я беспокоюсь, если есть проблема с доступом к базе данных. не уверен, есть ли что-то, что должно быть обработано во втором.

Спасибо за информацию. как бы ты это сделал? нужна конкретная информация по этому вопросу (для меня легче понять), а также общая информация о том, как выполнять другие задачи / функции.

Я посмотрел в Интернете, но у всех есть разные вещи, чтобы сказать, так что неуверенный, что делать ... пойдет или с большинством голосов здесь, или с наиболее логичным объясненным ответом :) спасибо.