Best Practice: Möglichkeiten zur Behandlung von Fehlern und Ausnahmen in Web-API-Controllern?

Ich arbeite an einem Projekt und habe mich bei all meinen clientseitigen Vorgängen stark auf die Web-API verlassen, sei es die Aktualisierung von Kontodetails, das Hinzufügen neuer Details oder das Ändern aller Änderungen mit ASP.NET Web Api und Backbone.js

Aktuelle Szene:

Im aktuellen Schema der Dinge gebe ich einen booleschen Wert von meinen Web-API-Controllern zurück, um anzuzeigen, ob die Operation erfolgreich war oder nicht.

Beispiel:

[ActionName("UpdateAccountDetails")]
public bool PostAccountDetails(SomeModel model)
{
    bool updateStatus = _customService.UpdateAccountDetails(model);
    return updateStatus;
}

Nach einem Ajax-Aufruf dieser Aktion überprüfe ich die Antwort auf true / false und zeige Fehler- oder Erfolgsmeldungen an.

Problem :

Was nun geschah, war, dass ich in meiner Aktion Ausnahmen abbekam und die Aktion immer wieder false zurückgab und die Fehlermeldung angezeigt wurde. Aber ich konnte nicht finden warum?

Ich habe mich also gefragt, ob es eine Standard-API-Antwortstruktur gibt, der jeder folgt.

Ich hatte ursprünglich die Idee, dass jede Web-API-Aktion diese Klasse zurückliefert

public class OperationStatus
{
    public bool Result { get; set; } // true/false
    public string Status { get; set; } // success/failure/warning
    public List<string> WarningMessages { get; set; }
    public List<string> ErrorMessages { get; set; }
    public string OtherDetails { get; set; }
}

Diese Änderung wäre eine große Änderung und zeit- und ressourcenintensiv. Ich dachte, es wäre besser, eine zweite / dritte / vierte Meinung dazu zu haben.

Bitte denken Sie darüber nach.

Update:

Mit etwaskleine Hilfe vonMark JonesIch habe mir das ausgedacht

[ActionName("UpdateAccountDetails")]
public HttpResponseMessage PostAccountDetails(SomeModel model)
{
    bool updateStatus;
    string errorMessage;
    try{
        updateStatus = _customService.UpdateAccountDetails(model);
        if(updateStatus)
        {
            return Request.CreateResponse(HttpStatusCode.OK);
        }
        return Request.CreateResponse(HttpStatusCode.InternalServerError);
    }
    catch(Exception exception)
    {
        errorMessage = exception.Message;
        return Request.CreateResponse(HttpStatusCode.InternalServerError, errorMessage);
    }

    return updateStatus;
}

Irgendwelche Gedanken dazu?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage