Need help with exception replacing/logging

Topics: Exception Handling Application Block, Logging Application Block
Apr 28, 2014 at 8:21 PM
Hey I'm new to the Ent. Lib and am struggling to get something to work. I am trying to create a wrapper class for entlib within my org to be used for our error handling. Rather than have the developers call the MS code directly i am trying to wrap the logic up in a class. However I'm struggling to make this work. Essentially there will be 2 policies; general and critical. A general error will be logged to db while the critical would replace, log, and email an admin.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
using Microsoft.Practices.EnterpriseLibrary.Logging;


public class ExceptionHandler
{
    #region Private Variables

    private Exception _exception = null;
    private string _policy = null;
    private IConfigurationSource config = null;
    private ExceptionPolicyFactory policyFactory = null;
    private ExceptionManager exManager = null;

    #endregion

    #region Public Properties
    #endregion

    #region Constructors



    static ExceptionHandler()
    {
        DatabaseFactory.SetDatabaseProviderFactory(new DatabaseProviderFactory());
        LogWriterFactory logWriterFactory = new LogWriterFactory();
        Logger.SetLogWriter(logWriterFactory.Create());
    }

    public ExceptionHandler(Exception ex, string policy)
    {
        _exception = ex;
        _policy = policy;
        Initialize();
    }

    #endregion

    #region Private Methods

    private void Initialize()
    {
        
        //Setup based upon app.config values


        config = ConfigurationSourceFactory.Create();
        policyFactory = new ExceptionPolicyFactory(config);
        exManager = policyFactory.CreateManager();



    }
    #endregion

    #region Public Methods

    public void Log()
    {


        //use ExceptionManager to handle logging and whatever other policies are set in the config.
        //exManager.HandleException(_exception, _policy);

        Exception newException;
        bool shouldRethrow = ExceptionPolicy.HandleException(_exception, _policy, out newException);
        if (shouldRethrow)
        {
            if (newException != null) throw newException;
            //throw;
        }

    }
    #endregion
    
}
So basically in a try catch block would be like
try{
 codewillerror();
}

catch(Exception ex){
ExceptionHandler handler = new ExceptionHandler(ex, "Critical")
 handler.Log();
}
So I am clearly doing something wrong here.. Any help would be appreciated, seriously
Apr 28, 2014 at 9:01 PM
Sorry I left one important part out... I can get the code to log and email if i am using a policy which just logs and emails, however.... I need to figure out a way to work with replacing messages in try/catch.. I seriously would appreciate any advice on the topic. Regards
Apr 29, 2014 at 6:33 AM
I'm not sure I follow. Can you expand on the specific issue you are having and what you are trying to achieve? Is it just the replace handler that is not working?

~~
Randy Levy
entlib.support@live.com
Enterprise Library support engineer
Support How-to