Pour ce faire il faut commencer par dériver de la classe Execption
public class ExceptionPerso : Exception
Il mettre un constructeur approprié
public ExceptionPerso(Exception e)
{
_ExcepOrigine = e;
}
Vous naurez pas manqué de constater quil manque la donnée membre _ExcepOrigine, donc ajoutons la, et par la même occasion les membres utile pour notre exception perso
private int _Data1 = 0;
private string _Data2 = String.Empty;
private Exception _ExcepOrigine = null;
Pour les renseigner il faudra des accesseurs
public int Data1 {set{_Data1 = value;}}
public string Data2 {set{_Data2 = value;}}
Inutile de mettre un accesseur pour lexeption dorigine, elle est renseignée via le constructeur.
Une fois la classe a peut prêt au point, reste a mettre les methodes
A priori la methode writelog sera utile
public void WriteInLog()
{
string DetailInfo = "";
DetailInfo += "La donnéz 1 est = " + _Data1.ToString() + Environment.NewLine;
DetailInfo += "La donnée 2 " + _Data2 + Environment.NewLine;
Log.Write(DetailInfo, _ExcepOrigine, Log.LogLevel.Fatal);
}
Bien sur on peut utiliser un stringBuilder.
Et la classe Log reste a faire (peut être un prochain post si quelquun est intéresse)
Maintenant, comment faire remonter cette erreur ?
Rien de plus simple
Dans vos cacth (ou via un throw voulu)
Ajouter des throw jusquau plus au niveau du programme
catch (Exception e)
{
ExceptionPerso ePerso;
if (!(e is ExceptionPDF))
{
ePerso = new ExceptionPerso(e);
}
else
{
ePerso = (ExceptionPerso)e;
}
ePerso.Data1 = _IdUser;
ePerso.Data2 = "A cette endroit du code, surment un prb avec le user";
throw ePerso;
}
A votre dispo