Richtlinien zum Ausnahmedesign finden Sie in Microsoft MSDN, kombinieren Sie Ihr eigenes Verständnis und den Umgang mit Ausnahmefehlern in der vergangenen Entwicklung und fassen Sie die Software zusammen Entwicklungsarchitektur, wie man eine Reihe von Ausnahmefehlerkriterien besser entwerfen kann.
Die Bedeutung von Ausführungsfehler: Ein Ausführungsfehler tritt immer dann auf, wenn ein Mitglied nicht tun kann, was es tun soll wurde entwickelt (was der Mitgliedsname andeutet). Wenn die OpenFile-Methode beispielsweise kein geöffnetes Dateihandle an den Aufrufer zurückgeben kann, wird dies als Ausführungsfehler betrachtet.
Übersetzung:
Die Bedeutung eines Betriebsfehlers: Immer wenn ein Mitgliedsmodul seine erwartete Aufgabe nicht erfüllen kann, spricht man von einem Betriebsfehler. Beispielsweise kann die OpenFile-Methode kein Handle für die geöffnete Datei an den Aufrufer zurückgeben, was einen Vorgangsfehler darstellt.
Im Framework werden Ausnahmen für alle Fehlerbedingungen verwendet, einschließlich Ausführungsfehler.
Übersetzung:
Im Framework werden Ausnahmen verwendet, um alle Fehlerbedingungen, einschließlich Ausführungsfehler, zu behandeln.
Welche Methoden beim Entwerfen von Ausnahmen verboten werden sollten, welche bedenkenlos durchgeführt werden sollten und welche berücksichtigt werden sollten, sind in der folgenden Tabelle aufgeführt.
编号 | 方法 | 做法 |
---|---|---|
1 | 返回错误代码 | 禁止 |
2 | 执行错误,要抛出异常;如OpenFile()未返回文件句柄 | 建议 |
3 | 假如代码再继续执行就变得不安全时,考虑是调用System.Environment.FailFast终止进程还是抛异常。 | 考虑 |
4 | 如果有可能的话,在正常的控制流处,抛异常,见下面的分析 | 禁止 |
5 | 抛异常对性能的影响。 | 考虑 |
6 | 协定中纳入异常处理部分 | 建议 |
7 | 将异常作为返回值返回 | 禁止 |
8 | 使用异常生成器方法,为避免代码膨胀, 用helper方法创建异常和属性. | 考虑 |
9 | 异常筛选器中抛出异常. | 禁止 |
10 | 从finally 块中显示地抛出异常 | 禁止 |
Erklärung zu Punkt 4:
Berücksichtigen Sie beim täglichen Codieren das Tester-Macher-Muster für Mitglieder, das in häufigen Szenarien Ausnahmen auslösen kann, um damit verbundene Leistungsprobleme zu vermeiden zu Ausnahmen. Das Tester-Macher-Muster unterteilt einen Aufruf, der Ausnahmen auslösen kann: einen Tester und einen Macher. Der Tester führt einen Test für den Zustand durch, der dazu führen kann, dass der Macher eine Ausnahme auslöst test wird direkt vor dem Code eingefügt, der die Ausnahme auslöst, und schützt so vor der Ausnahme. Beispielcode von http://www.php.cn/
Referenz:
Tester und Doer führen jeweils ihre eigenen Aufgaben aus, wodurch das Auslösen von Ausnahmen perfekt reduziert und die Leistung verbessert wird.
Macher: Wenn die obige Statusüberwachung gut ist, kann sie von DoProcess() verarbeitet werden. Wenn sie falsch ist und DoProcess() die DoCheck()-Logik enthält, wird eine Ausnahme ausgelöst, aber nach dieser Trennung wird DoProcess ausgelöst ( ) löst keine Ausnahme aus!
if(DoCheck()==true)//这是Tester:状态监测 DoProcess();
Häufige Ausnahmen und Handhabungsmethoden in der Softwareentwicklung (Selbstzusammenfassung)
1 Es wird empfohlen, die von der UI-Ebene bereitgestellte Betriebsschnittstelle in einem Versuch zu umschließen {}catch{}-Block , die im Catch ausgelöste Ausnahme wird auf die Festplatte geschrieben.
2 Wenn ein Timer in der UI-Ebene verwendet wird, wenn eine Ausnahme in der Rückruffunktion des Zählers auftritt, muss der Timer gestoppt werden, um zu verhindern, dass das Fehlerprotokoll in den geschrieben wird Datei.
3 Es wird empfohlen, den try{}catch{}-Block nicht in die unterste Ebene einzuschließen. Es wird empfohlen, throw zu verwenden, um eine Ausnahme direkt auszulösen, da try{} und Catch{}-Blöcke werden in die UI-Ebene eingeschlossen, sodass kein Schreiben in diese Ebenen erforderlich ist.
4 throw unterbricht zukünftige Vorgänge direkt und springt zu den äußeren Paketen des Stapels, try{} und Catch{}, also der UI-Ebene. Es ist im Allgemeinen so Es wird empfohlen, dass Funktionen keine Fehlercodes zurückgeben.
5 Bei der Verarbeitung stapelimportierter Daten ist eine lokale Ausnahme aufgetreten. Excel importiert Personal, Ausrüstung, Pläne, Materialien, Prozesse usw. Wenn eine bestimmte Datenzeile gegen die Regeln verstößt, wird zu diesem Zeitpunkt nicht empfohlen, eine Ausnahme auszulösen, da eine einmal ausgelöste Ausnahme bedeutet, dass die Daten in der Die folgenden Zeilen können nicht importiert werden und die importierten Daten werden zu fehlerhaften Daten.
Im Allgemeinen gibt es zwei Ansätze: Unzulässige Daten erscheinen in einer bestimmten Zeile und werden in der Protokolldatei aufgezeichnet. Später wird anhand dieser Datei festgestellt, dass die Daten nicht importiert wurden, und diese können dann separat verarbeitet werden ; Überprüfen Sie vor dem Import direkt, ob die Daten in allen Zeilen zulässig sind, und importieren Sie sie nacheinander . Andernfalls wird eine Eingabeaufforderung angezeigt und es werden keine Daten in die Datenbank geschrieben. Letzteres Vorgehen wird generell empfohlen. Dieser Ansatz wird als Tester-Doer-Ausnahmemodus bezeichnet und wird auch von Microsoft empfohlen.
6 Bei der Verarbeitung der Dashboard-Anzeigedaten ist lokal eine Ausnahme aufgetreten. Dieser Verarbeitungsmodus unterscheidet sich von 5. Wenn zu diesem Zeitpunkt eine Ausnahme auftritt, wird im Allgemeinen häufig die frühere Methode von 5 angewendet: zeigt die korrekten Daten an und die illegalen Daten werden zur Überprüfung in das Protokoll geschrieben ; Es ist jedoch auch möglich, dass, wenn die Hauptdaten in der angezeigten Schnittstelle nicht vorhanden sind, direkt eine Ausnahme ausgelöst, in das Protokoll geschrieben und über das Protokoll gelöst wird. Daher sollte die Verarbeitung entsprechend dem Schweregrad der Anomalie der Daten erfolgen.
7 Versuchen Sie anhand von Entwicklungsdokumenten, Protokollen und Analysen den Grund zu finden, warum eine bestimmte Funktion nicht implementiert ist. Bewahren Sie zunächst die Entwicklungsunterlagen auf und prüfen Sie, ob die aktuellen Nutzeranforderungen mit denen in den Entwicklungsunterlagen übereinstimmen. Wenn sie konsistent sind, wird die Rolle des Protokolls zu diesem Zeitpunkt angezeigt. Beispielsweise ist ein Kreisdiagramm vorhanden, das den Abschluss aller Prozesse innerhalb einer Woche zusammenfasst Wenn ein Prozess aktiviert ist, bedeutet dies nicht, dass ein Prozess nicht gefunden wird. Wenn der Prozess in das Protokoll geschrieben wird, wird die Ursache gefunden. Daher sollte diese Art von Problem ebenfalls in das Protokoll geschrieben werden. Obwohl es sich nicht um einen Fehler handelt, kann es als Ausnahme klassifiziert werden.
8 Die Funktion gibt ein Objekt zurück, dessen Methoden und Eigenschaften von der nachfolgenden Logik referenziert werden. Das ist unvermeidlich! Und die Implementierung der meisten Funktionen hängt davon ab. Da auf das zurückgegebene Objekt später verwiesen wird, wird empfohlen, einen Nullvergleich durchzuführen. Wenn es null ist, wird eine Meldung angezeigt, oder es wird direkt eine Ausnahme ausgelöst Die UI-Ebene schreibt es je nach Situation nach der Verarbeitung in das Protokoll.
Das Obige ist eine detaillierte Einführung in die Exception-Designrichtlinien in .net und anderen Architekturen. Weitere verwandte Inhalte finden Sie in PHP Chinesische Website (www.php.cn)!