need to implement a global error handling, so maybe you can help out with the following example…
i have this code:
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;
}
}
and the md5 as well:
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();
}
so, how would i go about handling exceptions from these functions? they first one is called from the Default.aspx page. the second one is only called from other functions from the class library.
what is the best practice?
- surround code INSIDE each function with
try-catch - surround the FUNCTION CALL with
try-catch - something else??
what to do if exceptions happen?
in this example:
this is a user sign in, so somehow even if everything fails, the user should get some meaningful info – along the lines: sign in ok (just redirect), sign in not ok (wrong user name / password), sign in not possible due to internal problems, sorry (exception happened).
for the first function i am worried if there is a problem with database access.
not sure if there is anything that needs to be handled in the second one.
thnx for the info. how would you do it?
need specific info on this (easier for me to understand), but also general info on how to handle other tasks/functions.
i looked around the internet but everyone has different things to say, so unsure what to do… will go with either most votes here, or most logicaly explained answer 🙂 thank you.
This is important because you may use this library at many places for different purposes.
In your application presentation layer, if you’re consuming a library code and you’re aware about the possible exceptions then do catch them with try/catch.
Since you’re using asp.net I’d recommend to write a common page-base class and work some error handling mechanism in
Page_Errorevent that catches all un-handled exceptions on the page.Even beyond that you can use
Application_Erroreven in global.asax to catch any un-handled exception in any part of the application, Modules, Handler, services, pages etc.