ich in diesen Tagen eine API für einige Datenmanipulation bin writting und ich habe eine Frage gestellt, die ich nicht selbst beantworten kann: DBenutzerdefinierte Ausnahmeklasse Fehler aufmerksam zu machen und melden Sie sich
ich eine Ausnahmeklasse gemacht haben, die .NET erweitert Application Exception-Klasse, weil ich dort einige Funktionen hinzufügen möchte, die jedes Mal ausgeführt werden, wenn die API eine Ausnahme auslöst. Zum Beispiel möchte ich die Fehlermeldung und Stacktrace per SMS und E-Mail und ich möchte die innere Ausnahme über Log4net protokollieren. Ich weiß nicht, ob dies ein guter Ansatz für die benutzerdefinierte Ausnahmeklasse ist oder ob ich die Bedeutung der benutzerdefinierten Ausnahmen überstrapaziert habe.
Ich habe this article darüber lesen, wie die Ausnahme in C# zu erweitern, so wir hier mit meinem Beispiel Code gehen:
public class CustomExceptionClass : Exception
{
/// <summary>
/// I use custom functionality here everytime this exception occures
/// </summary>
/// <param name="errorMessage">error message</param>
/// <param name="innerEx">Inner exception that cause this exception</param>
public MyCustomException(string errorMessage, Exception innerEx) : base(errorMessage, innerEx)
{
//log exception
_log.ErrorFormat(errorMessage, innerEx);
//alert via sms and email
AlertMailer.SendAlertMessage(errorMessage, innerEx, innerEx.Message);
}
}
Andere haben es bereits angedeutet, aber trotzdem: nur ein Ausnahmeobjekt zu konstruieren bedeutet nicht, dass es jemals geworfen wird, geschweige denn an der (ungefähren) Position im Code, der es konstruiert wurde.Beachten Sie auch, dass das StackTrace des Exception-Objekts zu diesem Zeitpunkt ziemlich nutzlos ist, da es "leer" sein wird (die Exception wurde zu diesem Zeitpunkt noch nicht ausgelöst). –