Its better to use ErrorLog in Exception Handling. In ErrorLog we need to keep track of the File and the Function details where this Exception occurs. So, instead of sending the Hardcoded Values (i.e : Function Name , File Name ) to ErrorLog, we can directly get this details from Exception object (i.e : Exception ex) as follows :
Code :
Use namespace :
Code :
Use namespace :
using System.Diagnostics; using System.Reflection;Function where Error Occurred :
/// <summary> /// Set AssetName for the AssetID /// </summary> /// <param name="programId"></param> /// <param name="languageId"></param> /// <param name="assetId"></param> /// <param name="assetName"></param> public void SetAssetName(Int32 progId, Int32 langId, int astId, string astName) { AssetClient assetClient = null; try { assetClient = new AssetClient(appBindingAssets); //return assetClient.SetAssetName(progmId, langId, astId, astName); } catch (Exception ex) { //call ErrorLog using the File Details LogError(ex); } finally { if (assetClient != null) { assetClient.Close(); } } }ErrorLog Function accepts Exception object as Parameter :
/// <summary> /// Logs the exception. /// </summary> /// <param name="ex"></param> public static void LogError(Exception ex) { // Get the File Details from Exception StackTrace st = new StackTrace(ex); // Get the object of MethodBase from StackTrace MethodBase mb = st.GetFrame(st.FrameCount - 1).GetMethod(); // Get FileName with NameSpace // Ex: IGroup.Modules.SalesZone.Controller.SalesZoneController" string source = mb.DeclaringType.FullName; // Get Function Name "GetPhraseTranslationList" string methodName = mb.Name; //Implement ErrorLog Logics here using the File Details //AddLogError(source, ex, methodName); }