Frage

Ich schreibe einen Webpart, damit andere Websites in ihrer SharePoint -Installation verwenden können. In der Logik des Web -Teils werfe ich Ausnahmen an bestimmten Fehlerpunkten. Ich frage mich, ob es eine bessere Praxis ist, die Ausnahmen zu fangen und mit ihnen selbst umzugehen, oder sie sprudeln lassen, damit die Entwickler/Administratoren diesen Webpart auf der Seitenebene mit ihnen umgehen können?

Wenn ich sie selbst fange, denke ich, dass das Web -Teil die gesamte Seite scheitert, wenn es eine Ausnahme macht. Wenn ich mich jedoch selbst mit der Ausnahme befasse, erlaubt es den Websites der Dritten nicht, mit den Ausnahmen auf unterschiedliche Weise umzugehen, die sie vielleicht möchten.

Dies Ausnahmeverwaltung in SharePoint Seite sagt:

... Eine nicht behandelte Ausnahme in einem einzelnen Webpart kann verhindern, dass die gesamte Webseite angezeigt wird. Dieses Verhalten wird manchmal erwünscht, da eine unberechtigte Ausnahme möglicherweise Daten auf der Seite beschädigen kann. In anderen Situationen kann es besser sein, unberatte Ausnahmen innerhalb von Webteilen zu fangen.

Ich bin mir jedoch nicht wirklich klar, welche Situationen ich vielleicht selbst die Ausnahmen fangen möchte und in denen ich sie vermehren lassen sollte - irgendwelche Ideen und Notizen aus dem Feld?

War es hilfreich?

Lösung

Wenn Sie die Ausnahmen behandeln, die Sie benötigen

  • Protokollieren Sie die Ausnahme
  • Zeigen Sie eine benutzerfreundliche Fehlermeldung an
  • Stellen Sie sicher, dass Sie keine sensiblen Daten freilegen
  • Ressourcen freigeben und die Anwendung konsistent lassen
  • Fangen Sie nur Ausnahmen an, die Sie bewältigen können

Wenn Sie diese Prinzipien nicht befolgen können, lassen Sie SharePoint den Fehler verarbeiten. SharePoint zeigt standardmäßig eine Meldung "unbekannter Fehler" an - nicht gut für die Endbenutzer, aber es ist ein Grund dafür, und das ist nicht, Details zu zeigen, die sensibel sein können.

Nehmen wir an, Sie verarbeiten ein außerhalb Speicher oder beschädigter Dateien oder was auch immer und zeigen dies nicht für den Benutzer oder lassen Sie SP ihn verarbeiten. Wenn dies von SP nicht protokolliert oder behandelt wird, finden Ihre Administratoren möglicherweise nie heraus, warum die Dinge schief gelaufen sind. Vor allem, wenn sie Überwachungstools (denken Sie an SCOM), die die ULS -Protokolle auf Fehler überprüfen.

Andere Tipps

Erstens sollten Sie defensiv codieren, damit Sie das Risiko minimieren, Ausnahmen zu werfen. Eine Möglichkeit, dies zu tun, besteht darin, Ihre Parameter immer in öffentlichen Methoden zu überprüfen, bevor Sie sie verwenden (z. B. Null -Check). Mit anderen Worten, Ihr Ausnahmebehandlung sollte keine Möglichkeit sein, den Fluss Ihrer Codelogik zu steuern, sondern ein letzter Ausweg. Das Fangen und Überdenken im Allgemeinen ist teuer und sollte vermieden werden. Z.B. Viele Methoden haben TryParse -Methoden, die gegenüber Parse bevorzugt werden sollten. Im Allgemeinen sollten Sie die Klassen verstehen, mit denen Sie arbeiten, und sicherstellen, dass Sie wissen, welche Ausnahmen sie werfen.

Beim Umgang mit Ausnahmen:

  • Protokollieren Sie Ihre Ausnahmen. Muster und Praktiken wurden nett Protokollierungsmodul Das verwendet das Service -Locator -Muster.
  • Fangen Sie in Ihren privaten Methoden so spezifische Ausnahmen wie möglich, und nur wenn dies sinnvoll ist. Fangen Sie alle Ausnahmen in Ihren überschriebenen öffentlichen Methoden, damit nur der Webpart fehlschlägt und nicht auf der gesamten Seite.
  • Wenn Sie überdenken, definieren Sie Ihre Ausnahme nicht, da dies sie als die erwischte Ausnahme ausspricht

    catch (Ausnahme ex) {Rethrow (e); // wird eine Ausnahme als Ausnahme ausgeben}

    fangen {Rethrow; // wird keine Ausnahme ausgeben}

Dies ist meine persönliche Meinung, aber Ausnahmen sollten niemals JE Sprudeln Sie für Endbenutzer.

Sie werden nicht nur nicht wissen, was sie mit diesen Informationen anfangen sollen, sondern auch nicht in der Lage sein, zu beurteilen, was die Lösung sein sollte, es sei denn, sie sind hochtechnisch.

Am Ende kennen Sie Ihre Lösung (Web -Teil) am besten. Fangen Sie also alle Details, die Sie in der UI -Ebene fangen können, und zeigen Sie etwas Nützliches an, auch wenn es sich nur um die Telefonnummer für den Helpdesk handelt.

Folgen Sie dem einfachen Prinzip "Fangen Sie, was Sie umgehen können". Wenn Sie nach dem Aufnehmen der Ausnahme nichts Sinnvolles tun können, macht es keinen Sinn, dies zu tun, es sei denn, Sie überdenken nach der Protokollierung oder nach einer Verarbeitung.

Da Sie ein Webpart verteilen, das von anderen Websites/Anwendungen verwendet wird, sollte sich Ihr Webpart anmutig verhalten, da es sich in einer anderen Anwendung befindet, die es nicht besitzt.

Das Ding wäre also die Ausnahme, protokollieren Sie sie und zeigt eine freundliche Nachricht im Webpart selbst an, anstatt die gesamte Site zu senken, es sei denn, dies ist, wenn Sie dies wollten (da es bestimmte Anforderungen gibt, die dies rechtfertigen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top