2010-02-18 6 views
12

Ist es eine schlechte Programmierpraxis, try/catch-Blöcke innerhalb von Konstruktoren zu haben? Oder macht es keinen Unterschied, solange unsere Programme die Exceptions von typeinitializer korrekt handhaben.Try/catch Blöcke innerhalb von Konstruktoren

In C#, wenn es Ausnahmen in einem Konstruktor gibt, löst das Framework immer typeInitizer Exceptions aus.

Danke, Shamika

Antwort

19

System.TypeInitializationException ausgelöst wird, wenn ein statisches Konstruktor eine Ausnahme auslöst, nicht auf einem Instanz-Konstruktor. Ausnahmen werden normalerweise in Instanzkonstruktoren ausgelöst.

Abgesehen davon, es gibt nichts "falsch" mit ihm mehr als irgendwo anders; behandle Ausnahmen, von denen du richtig wiederherstellen kannst, und erlaube denen, die du nicht aufblasen kannst.

+0

Danke für die Erklärung zu System.TypeInitializationException und ja, in meinem Fall ist es in der Tat ein statischer Konstruktor. – Shamika

+0

@Shamika: Trotzdem gilt die gleiche Antwort; Wenn Sie die Ausnahme wiederherstellen können, fangen Sie sie ab. Wenn nicht, dann nicht. Beachten Sie außerdem, dass Ausnahmen, die bei der Initialisierung statischer Elemente auftreten, nicht abgefangen werden können (sie werfen eine 'TypeInitializationException'). –

+0

Frage, ist es besser, einen try catch zu verwenden, der den Aufruf des Konstruktors oder des Konstruktors umgibt? –

Verwandte Themen