como: lidar com exceções, práticas recomendadas
precisa implementar um tratamento de erros global, então talvez você possa ajudar com o exemplo a seguir ...
eu tenho 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;
}
}
e o md5 também:
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();
}
então, como eu lidaria com exceções dessas funções? eles primeiro é chamado a partir da página Default.aspx. o segundo é chamado apenas de outras funções da biblioteca de classes.
qual é a melhor prática?
código surround DENTRO de cada função comtry-catch
rode a CHAMADA DE FUNÇÃO comtry-catch
algo mais??o que fazer se ocorrerem exceções?
neste exemplo: este é um login do usuário; portanto, mesmo que tudo falhe, o usuário deve obter informações significativas - ao longo das linhas: entrar ok (apenas redirecionar), entrar não ok (nome de usuário / senha incorretos), Não é possível fazer login devido a problemas internos. Desculpe. Ocorreu uma exceção.
Para a primeira função, estou preocupado se houver um problema com o acesso ao banco de dados. não tenho certeza se há algo que precise ser tratado no segundo.
thnx para a informação. Como você faria? preciso de informações específicas sobre isso (mais fácil para eu entender), mas também informações gerais sobre como lidar com outras tarefas / funções.
Eu olhei em volta da internet, mas todo mundo tem coisas diferentes a dizer, por isso não sei o que fazer ... irá com a maioria dos votos aqui ou com a resposta mais lógica explicada :) obrigado.