J'ai trouvé quelques question sur le filtrage des exceptions en C#. Et je pense écrire une émulation pour ça. Je ne sais pas comment cela aide pour quelqu'un et je n'ai pas travaillé avec le filtrage VB. Bien sûr, il n'est pas optimisé et la production est prête, mais fonctionne et fait ce qu'il faut faire (comment j'ai compris le problème). Sketch de travail donc:Moniteur d'exception C# avec filtrage
using System;
namespace ExceptionFiltering
{
class ExceptionMonitor
{
Action m_action = null;
public ExceptionMonitor(Action action)
{
this.m_action = action;
}
public void TryWhere(Func<Exception, bool> filter)
{
try
{
this.m_action();
}
catch (Exception ex)
{
if (filter(ex) == false)
{
throw;
}
}
}
public static void TryWhere(Action action, Func<Exception, bool> filter)
{
try
{
action();
}
catch (Exception ex)
{
if (filter(ex) == false)
{
throw;
}
}
}
}
class Program
{
//Simple filter template1
static Func<Exception, bool> m_defaultExceptionFilter = ex =>
{
if (ex.GetType() == typeof(System.Exception))
{
return true;
}
return false;
};
//Simple filter template2
static Func<Exception, bool> m_notImplementedExceptionFilter = ex =>
{
if (ex.GetType() == typeof(System.NotImplementedException))
{
return true;
}
return false;
};
static void Main(string[] args)
{
//Create exception monitor
ExceptionMonitor exMonitor = new ExceptionMonitor(() =>
{
//Body of try catch block
throw new Exception();
});
//Call try catch body
exMonitor.TryWhere(m_defaultExceptionFilter);
//Call try catch body using static method
ExceptionMonitor.TryWhere(() =>
{
//Body of try catch block
throw new System.NotImplementedException();
}, m_notImplementedExceptionFilter);
//Can be syntax like ExceptionMonitor.Try(action).Where(filter)
//Can be made with array of filters
}
}
}
À propos de: gestionnaire d'exception global, prenant en charge plusieurs filtres, etc;
Merci pour tous conseils, corrections et optimisations !!!
Quelle est votre question? – cdhowie
@cdhowie: Je pense que la question est «quel est votre conseil?' –
@cdhowie je pense que ma question est de savoir comment j'ai compris le problème de filtrage d'exception))) – Edward83