cómo: manejar excepciones, mejores prácticas

necesita implementar un manejo de errores global, por lo que tal vez pueda ayudar con el siguiente ejemplo ...

Tengo este código:

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;
            }
        }

y el md5 también:

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();
        }

Entonces, ¿cómo haría para manejar las excepciones de estas funciones? el primero se llama desde la página Default.aspx. el segundo solo se llama desde otras funciones desde la biblioteca de clases.

¿cual es la mejor practica?

código surround DENTRO de cada función contry-catchrodee la LLAMADA DE FUNCIONES contry-catch¿¿algo más??

¿Qué hacer si ocurren excepciones?

en este ejemplo: este es un inicio de sesión del usuario, por lo que, de alguna manera, incluso si todo falla, el usuario debería obtener información significativa, en la misma línea: inicie sesión ok (solo redirigir), inicie sesión no ok (nombre de usuario / contraseña incorrectos), no es posible iniciar sesión debido a problemas internos, lo siento (se produjo una excepción).

para la primera función me preocupa si hay un problema con el acceso a la base de datos. No estoy seguro de si hay algo que deba manejarse en el segundo.

Gracias por la información. ¿como lo harias? Necesito información específica sobre esto (más fácil de entender para mí), pero también información general sobre cómo manejar otras tareas / funciones.

busqué en Internet pero todos tienen diferentes cosas que decir, así que no estoy seguro de qué hacer ... iré con la mayoría de los votos aquí, o la respuesta más explicada lógicamente :) gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta