Ich habe eine Situation, in der eine Benutzeroperation den aktuellen Status einer Anfrage ändert.Welche Ausnahme sollte ich werfen und sollte ich eine Nachricht bereitstellen?
über den aktuellen Status Je dann nur bestimmte Operationen sind möglich, dh
Pending genehmigt werden kann oder abgelehnte oder gekündigte Approved kann ‚Angeforderte Abbrechen‘ werden ‚Angeforderte Abbrechen‘ kann ‚Annullierung Approved‘ oder ‚Stornierung werden angeforderte‘
Meine Frage ist, welche Art von Ausnahme soll ich erhöhen, wenn die angeforderte Operation nicht durchgeführt werden kann? Sollte ich eine eingebaute Ausnahme verwenden oder sollte ich eine benutzerdefinierte Ausnahme wie InvalidCurrentStatusException oder ähnliches erstellen?
für InvalidOperationException bei der Dokumentation der Suche scheint einen Hauptkandidat als es die Ausnahme, die ausgelöst wird, wenn ein Methodenaufruf für das Objekt aktuellen Zustand ungültig ist "ist.
Wenn ich mit der zweiten Option einer benutzerdefinierten Ausnahme gehe dann brauche ich nicht eine Nachricht zu liefern.
Wenn ich die eingebaute InvalidOperationException verwenden soll ich biete eine Nachricht und was sollte die Botschaft sein?
UPDATE:
hier ist der Code, den ich im Moment haben:
internal void CancelRequest(int requestID, int userID, string notes)
{
DateTime editDate = DateTime.UtcNow;
var request = this.FindByID(requestID, CancelRequestIncludes);
if(request == null)
{
throw new ArgumentException(InvalidRequestMessage);
}
var currentStatus = request.LeaveRequestStatuses.Where(s => s.IsCurrent).FirstOrDefault();
if (currentStatus.StatusID == (int)RequestStatuses.RequestPending)
{
SetNewRequestStatus(request, currentStatus, RequestStatuses.CancellationApproved, userID, notes, editDate);
}
else if (currentStatus.StatusID == (int)RequestStatuses.RequestApproved)
{
if (ValidApprover(request.UserID, userID))
{
SetNewRequestStatus(request, currentStatus, RequestStatuses.CancellationPending, userID, notes, editDate);
}
else
{
//throw an invalid approver exceptioon
}
}
else
{
//throw exception as cant carry out cancellation
}
Context.SaveChanges();
}
Ich ziehe es individuelle Ausnahmen für meinen Code und System Ausnahmen für Systemklassen verwenden Dies kann Ihnen helfen. Wenn Sie nicht wissen, wo der Fehler liegt und warum. – ganchito55
Wenn Sie feststellen können, dass die Anfrage ungültig ist, sollten Sie eine Ausnahme gegen eine Fehlermeldung jeglicher Art auslösen. Oder besser, deaktivieren Sie die ungültigen Optionen bedingt, damit der Benutzer nicht kippen kann tue schlechte Dinge – Plutonix
Ich stimme @Plutonix zu: In diesem Fall können Sie anstelle einer Ausnahme eine Art "Anwendungsstatus" -Eigenschaft und Aufzählung (Genehmigt, Abgelehnt, Abgebrochen) verwenden. Mit freundlichen Grüßen, –