Sollte ich Ausnahmespezifizierer in C integrieren?
Ausnahmespezifizierer in C ermöglichen es Funktionen, anzugeben, ob sie Ausnahmen auslösen dürfen, wie zum Beispiel:
<code class="cpp">void foo() throw(); // guaranteed not to throw an exception void bar() throw(int); // may throw an exception of type int void baz() throw(...); // may throw an exception of some unspecified type</code>
Während diese Spezifizierer Absichten vermitteln können, ist ihr praktischer Nutzen aufgrund mehrerer Faktoren fraglich:
Einschränkungen bei der Durchsetzung
Compiler tun dies nicht unbedingt erzwingen Ausnahmespezifizierer und verringern so deren Wirksamkeit. Ideales Verhalten würde zu Kompilierungsfehlern bei Verstößen gegen Spezifikationen führen, dies kann jedoch nicht garantiert werden.
Schwere Strafe für Verstöße
Wenn eine Funktion gegen einen Ausnahmespezifizierer verstößt, ist das Standardverhalten um das Programm zu beenden. Diese harte Reaktion ist möglicherweise nicht in allen Fällen wünschenswert.
Inkonsistente Behandlung in Entwicklungsumgebungen
Einige Entwicklungsumgebungen, wie z. B. VS.Net, behandeln throw(X) als throw(...), was die Einhaltung des Standards untergräbt.
Argumente gegen Ausnahmespezifizierer
Zusätzlich zu den oben genannten Bedenken sprechen mehrere Argumente gegen die Verwendung von Ausnahmen Spezifizierer:
Wann Ausnahmespezifizierer nützlich sein können
Trotz der allgemeinen Empfehlung, Ausnahmespezifizierer nicht zu verwenden, können sie dennoch von Vorteil sein, wenn:
Das obige ist der detaillierte Inhalt vonSind Ausnahmespezifizierer im modernen C immer noch relevant?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!