Die Richtlinien für das Ausnahmedesign finden Sie in Microsoft MSDN. Kombinieren Sie Ihr eigenes Verständnis und den Umgang mit Ausnahmefehlern in früheren Entwicklungen, fassen Sie die Architektur der Softwareentwicklung zusammen und erfahren Sie, wie das geht Entwerfen Sie es besser. Eine Reihe von Richtlinien für Ausnahmefehler.
Die Bedeutung von Ausführungsfehler: Ein Ausführungsfehler tritt immer dann auf, wenn ein Mitglied nicht das tun kann, was es sollte Entwickelt, um zu tun (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. Referenzbeispiel von http://blog.csdn.net/troubleshooter/article/details/18401491
Code:
Tester und Macher erfüllen ihre jeweiligen Aufgaben, 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 wenn DoProcess() die DoCheck()-Logik enthält, wird eine Ausnahme ausgelöst. aber auf diese Weise löst DoProcess() nach der Trennung keine Ausnahme aus!
if(DoCheck()==true)//这是Tester:状态监测 DoProcess();
Häufige Ausnahmen und Handhabungsmethoden in der Softwareentwicklung (eigene Zusammenfassung)
1 Es wird empfohlen, die von der UI-Schicht bereitgestellte Bedienoberfläche 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 auf die unterste Ebene zu packen. Es wird empfohlen, throw zu verwenden, um Ausnahmen direkt auszulösen {}-Blöcke werden auf der UI-Ebene umschlossen, es gibt keine Notwendigkeit, in diese Ebenen zu schreiben.
4 throw unterbricht zukünftige Vorgänge direkt und springt zum äußeren Stapel try{} und Catch{}, also zur UI-Ebene.Es wird allgemein empfohlen, dass Funktionen dies tun 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.
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 Analysenden 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 auch diese Art von Problem 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 der detaillierte Inhalt von.NET Framework – detaillierte Erläuterung der Ausnahmeentwurfsprinzipien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!