Ich bin mir nicht sicher, was den Unterschied zwischen den verschiedenen Möglichkeiten zu HandleError.Ich brauche mehr Informationen über HandleError
In der asp.net Mvc (Standardprojekt) sie dies der Klasse ganz oben in der
[Handle]
So war ich einige Blog zu lesen und die Person sagt, das
“. ... teilt dem Framework mit, dass wenn eine unbehandelte Ausnahme in Ihrem Controller auftritt, anstatt den gelben Standardbildschirm des Todes anzuzeigen, sollte stattdessen eine Ansicht namens Fehler angezeigt werden. "
http://blog.dantup.me.uk/2009/04/aspnet-mvc-handleerror-attribute-custom.html
Also das bedeutet, ich sollte keine Fehler werden zu kontrollieren (dh keine try Fänge)? sie setzen es nur auf dieser Action und geben ihm eine Ausnahmetyp
ich dann in einem Buch gesucht und sie haben
[HandleError(ExceptionType=typeof(InsufficientMemoryException),View="About")]
public ActionResult HandleError()
{
throw new
InsufficientMemoryException();
return View("Home");
}
So. Meine erste Frage ist, was passiert, wenn Sie mehr als einen Fehler haben, den Sie werfen? Auch ich dachte, du solltest mit allen Fehlern umgehen. Ich weiß, das ist nur ein kleines Beispiel, aber sollten Sie die MemoryException nicht irgendwo finden oder mischt das "HandleError", wenn Sie das tun?
Ich bemerkte auch, während es in VS, dass HandleError hat 2 Überlastungsmethoden. Einer von ihnen ist der obige und der andere ist HandError().
Also warum ist in der asp.net MVC Beispieldatei nur [HandleError] und nicht [HandleError()]? Wird eines für Aktionsmethoden und eines für Klassen verwendet? Ich gehe davon aus, dass HandleError am Anfang der Klasse 1 wäre wie HandleError (typeof (Exception))?
und schließlich gibt es etwas namens IExceptionFilter. Sie verwenden das also, wenn Sie alle Ausnahmen protokollieren wollen oder wenn Sie spezielle Ausnahmen haben, mit denen Sie etwas anders machen möchten?
Wie wenn ich nur alle Ausnahmen protokollieren wollte, egal was ich machen würde nur eine von diesen und das ist es, aber wenn ich etwas Besonderes bei einer NullReferenceexception machen wollte, würde ich eine andere machen?
Ich beobachtete dieses Tutorial http://dimecasts.net/Casts/CastDetails/37 und ich sehe dieses "ActionFilterAttribute" nicht, über das sie sprechen. Ist das von einer alten Version oder etwas?
Wie anscheinend hat es 4 Methoden, die Sie verwenden können, und Sie müssen sie überschreiben. In meinem Buch es nur Gespräche über diese:
- IAuthorizationFilter
- IActionFilter
- IResultFilter
- IExceptionFilter
und sie sind alle Schnittstellen so kein überwiegendes. Nicht von ihnen haben jedoch 4 Methoden. Nur ein oder 2.
Dank
Oh eine weitere Sache. Sollten Sie immer auf jede einzelne Ausnahme testen?Wie eine meiner Methoden kann 7 verschiedene Ausnahmen auftreten. Sollte ich für alle 7 Ausnahmen testen (dh sie werfen), dann fangen Sie sie schließlich und behandeln Sie sie (ich drucke normalerweise nur einige Nachrichten aus).
Wenn ja, hat VS2008 etwas, das die Ausnahmen findet, die passieren können. Manchmal fällt es mir schwer zu sagen, was eine Ausnahme auslösen kann, dann muss ich herausfinden, welche.
Hmm also Handle Fehler ist, wenn Sie eine generische Seiten für alle Fehler wollen? Wenn Sie genauere Fehler möchten, dann setzen Sie es über die actionView? Wie wäre es mit "IExceptionFilter" wann würde ich dieses verwenden? Wäre dies der Ort, an dem ich mein Logging-Zeug (oder Elmah-Code) wäre? Auch ich bin mir immer noch nicht sicher, wie der Code aussieht? Behandle ich die Fehler nicht (try/catch) oder behandle ich sie trotzdem? Ich bin nicht klar, ob ich mit ihnen umgehen würde, wenn das [HandleError] verwirrt. Auch wenn ich sie handhabe wird das ELMAH-Framework nicht davon abhalten, Sachen auf gehandhabten Ausnahmen zu tun? Dh ich müsste bekannte manuell protokollieren? – chobo2