Hi, all. I have the following region I keep snippetting after the try {} blocks. It's purpose is to provide debugging information whenever configured back to the database ... It does debug nicely ( not all it is supposed to debug , but enough to find exactly the error, BUT ..
The code smells. Even I can get it. Do you have a better idea of error handling for db methods ( I am working currently on log4net implementation on it )
Here is the code:
region CatchExceptionsAdv5NoReturnAtAll
catch (NullReferenceException nre)
{
if (userObj == null)
{
userObj = new FB.User ();
FB.User.GiveDefaultUser ( ref userObj );
}
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace ();
string methodName = st.GetFrame ( 1 ).GetMethod ().Name;
string className = st.GetFrame ( 1 ).GetFileName ();
int lineNumber = st.GetFrame ( 1 ).GetFileLineNumber ();
string encryptedErrorCode = String.Empty;
encryptedErrorCode += "className - " + className + " methodName ";
encryptedErrorCode += methodName + " lineNumber " + lineNumber.ToString ();
encryptedErrorCode += userObj.DomainName;
if (System.Convert.ToInt16 ( BL.Conf.Instance.Vars["EncryptErrorMessages"] ) == 1)
encryptedErrorCode = Utils.DataEncryption.EncryptString ( encryptedErrorCode, userObj.DomainName );
userObj.Mc.Msg = "An error in the application occurred. Report the following error code " + encryptedErrorCode;
userObj.Mc.ClassName += className + " ; ";
userObj.Mc.MethodName += methodName + " ; ";
userObj.Mc.DebugMsg += nre.Message;
//
if (Providers.nsDbMeta.DbDebugger.DebugAppError ( ref userObj ) == false)
{
userObj.Mc.Msg = "Failed to debug application error at " + methodName;
//Providers.nsDbMeta.Providers.nsDbMeta.DbDebugger.WriteIf ( userObj.Mc.Msg );
}
} //eof catch
catch (System.InvalidOperationException ioe) //comm -- occurs when no result set was found !!!
{
if (userObj == null)
{
userObj = new FB.User ();
FB.User.GiveDefaultUser ( ref userObj );
}
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace ();
string methodName = st.GetFrame ( 1 ).GetMethod ().Name;
string className = st.GetFrame ( 1 ).GetFileName ();
int lineNumber = st.GetFrame ( 1 ).GetFileLineNumber ();
string encryptedErrorCode = String.Empty;
encryptedErrorCode += "className - " + className + " methodName ";
encryptedErrorCode += methodName + " lineNumber " + lineNumber.ToString ();
encryptedErrorCode += userObj.DomainName;
if (System.Convert.ToInt16 ( BL.Conf.Instance.Vars["EncryptErrorMessages"] ) == 1)
encryptedErrorCode = Utils.DataEncryption.EncryptString ( encryptedErrorCode, userObj.DomainName );
userObj.Mc.Msg = "An error in the application occurred. Report the following error code " + encryptedErrorCode;
userObj.Mc.ClassName += className + " ; ";
userObj.Mc.MethodName += methodName + " ; ";
userObj.Mc.DebugMsg += ioe.Message;
//
if (Providers.nsDbMeta.DbDebugger.DebugAppError ( ref userObj ) == false)
{
userObj.Mc.Msg = "Failed to debug application error at " + methodName;
//Providers.nsDbMeta.Providers.nsDbMeta.DbDebugger.WriteIf ( userObj.Mc.Msg );
}
} //eof catch (System.InvalidOperationException)
catch (System.IndexOutOfRangeException ioore) //comm -- occurs when no result set was found !!!
{
if (userObj == null)
{
userObj = new FB.User ();
FB.User.GiveDefaultUser ( ref userObj );
}
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace ();
string methodName = st.GetFrame ( 1 ).GetMethod ().Name;
string className = st.GetFrame ( 1 ).GetFileName ();
int lineNumber = st.GetFrame ( 1 ).GetFileLineNumber ();
string encryptedErrorCode = String.Empty;
encryptedErrorCode += "className - " + className + " methodName ";
encryptedErrorCode += methodName + " lineNumber " + lineNumber.ToString ();
encryptedErrorCode += userObj.DomainName;
if (System.Convert.ToInt16 ( BL.Conf.Instance.Vars["EncryptErrorMessages"] ) == 1)
encryptedErrorCode = Utils.DataEncryption.EncryptString ( encryptedErrorCode, userObj.DomainName );
userObj.Mc.Msg = "An error in the application occurred. Report the following error code " + encryptedErrorCode;
userObj.Mc.ClassName += className + " ; ";
userObj.Mc.MethodName += methodName + " ; ";
userObj.Mc.DebugMsg += ioore.Message;
//
if (Providers.nsDbMeta.DbDebugger.DebugAppError ( ref userObj ) == false)
{
userObj.Mc.Msg = "Failed to debug application error at " + methodName;
//Providers.nsDbMeta.Providers.nsDbMeta.DbDebugger.WriteIf ( userObj.Mc.Msg );
}
} //eof catch (System.IndexOutOfRangeException)
catch (System.Data.SqlClient.SqlException sqle)
{
if (userObj == null)
{
userObj = new FB.User ();
FB.User.GiveDefaultUser ( ref userObj );
}
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace ();
string methodName = st.GetFrame ( 1 ).GetMethod ().Name;
string className = st.GetFrame ( 1 ).GetFileName ();
int lineNumber = st.GetFrame ( 1 ).GetFileLineNumber ();
string encryptedErrorCode = String.Empty;
encryptedErrorCode += "className - " + className + " methodName ";
encryptedErrorCode += methodName + " lineNumber " + lineNumber.ToString ();
encryptedErrorCode += userObj.DomainName;
if (System.Convert.ToInt16 ( BL.Conf.Instance.Vars["EncryptErrorMessages"] ) == 1)
encryptedErrorCode = Utils.DataEncryption.EncryptString ( encryptedErrorCode, userObj.DomainName );
userObj.Mc.Msg = "An error in the application occurred. Report the following error code " + encryptedErrorCode;
userObj.Mc.ClassName += className + " ; ";
userObj.Mc.MethodName += methodName + " ; ";
userObj.Mc.DebugMsg += sqle.Message;
//
if (Providers.nsDbMeta.DbDebugger.DebugAppError ( ref userObj ) == false)
{
userObj.Mc.Msg = "Failed to debug application error at " + methodName;
//Providers.nsDbMeta.Providers.nsDbMeta.DbDebugger.WriteIf ( userObj.Mc.Msg );
}
} //eof catch
catch (System.FormatException fe)
{
if (userObj == null)
{
userObj = new FB.User ();
FB.User.GiveDefaultUser ( ref userObj );
}
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace ();
string methodName = st.GetFrame ( 1 ).GetMethod ().Name;
string className = st.GetFrame ( 1 ).GetFileName ();
int lineNumber = st.GetFrame ( 1 ).GetFileLineNumber ();
string encryptedErrorCode = String.Empty;
encryptedErrorCode += "className - " + className + " methodName ";
encryptedErrorCode += methodName + " lineNumber " + lineNumber.ToString ();
encryptedErrorCode += userObj.DomainName;
if (System.Convert.ToInt16 ( BL.Conf.Instance.Vars["EncryptErrorMessages"] ) == 1)
encryptedErrorCode = Utils.DataEncryption.EncryptString ( encryptedErrorCode, userObj.DomainName );
userObj.Mc.Msg = "An error in the application occurred. Report the following error code " + encryptedErrorCode;
userObj.Mc.ClassName += className + " ; ";
userObj.Mc.MethodName += methodName + " ; ";
userObj.Mc.DebugMsg += fe.Message;
//
if (Providers.nsDbMeta.DbDebugger.DebugAppError ( ref userObj ) == false)
{
userObj.Mc.Msg = "Failed to debug application error at " + methodName;
//Providers.nsDbMeta.Providers.nsDbMeta.DbDebugger.WriteIf ( userObj.Mc.Msg );
}
} //eof catch
catch (Exception ex)
{
if (userObj == null)
{
userObj = new FB.User ();
FB.User.GiveDefaultUser ( ref userObj );
}
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace ();
string methodName = st.GetFrame ( 1 ).GetMethod ().Name;
string className = st.GetFrame ( 1 ).GetFileName ();
int lineNumber = st.GetFrame ( 1 ).GetFileLineNumber ();
string encryptedErrorCode = String.Empty;
encryptedErrorCode += "className - " + className + " methodName ";
encryptedErrorCode += methodName + " lineNumber " + lineNumber.ToString ();
encryptedErrorCode += userObj.DomainName;
if (System.Convert.ToInt16 ( BL.Conf.Instance.Vars["EncryptErrorMessages"] ) == 1)
encryptedErrorCode = Utils.DataEncryption.EncryptString ( encryptedErrorCode, userObj.DomainName );
userObj.Mc.Msg = "An error in the application occurred. Report the following error code " + encryptedErrorCode;
userObj.Mc.ClassName += className + " ; ";
userObj.Mc.MethodName += methodName + " ; ";
userObj.Mc.DebugMsg += ex.Message;
//
if (Providers.nsDbMeta.DbDebugger.DebugAppError ( ref userObj ) == false)
{
userObj.Mc.Msg = "Failed to debug application error at " + methodName;
//Providers.nsDbMeta.Providers.nsDbMeta.DbDebugger.WriteIf ( userObj.Mc.Msg );
}
} //eof catch
#endregion CatchExceptionsAdv5NoReturnAtAll