Entwickler-Ecke
C# - Die Sprache - C# Klassenkonstuktor erfolgreich oder nicht?
FinalFantasy - Do 03.11.05 17:06
Titel: C# Klassenkonstuktor erfolgreich oder nicht?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| class MyXML { private XmlDocument m_xml;
public MyXML(string filename) { try { m_xml = new XmlDocument(); m_xml.Load(filename); } catch { } } }
class App { static void Main() { MyXML blubb = new MyXML("c:\test.xml"); } } |
So, auch wenn die zu ladende XML-Datei gar nicht existiert und m_xml.Load eine Exception wirft, liefert der Konstruktor nicht null zurück.
Ich denke aber mal, es ist verständlich, dass mir die ganze Instanz nichts bringt, wenn nichtmal die XML-Datei geladen werden kann.
Ich könnte mir natürlich eine Membervariable in MyXML anlegen, z.B. m_XmlLoaded und diese im Catch des Konstruktors auf false setzen und später abfragen, aber das ist ein bisschen umständlich... einfacher wäre es, wenn ich gar keine Instanz kriege, sondern der Konstruktor gleich null zurückliefern würde.
Ich habe aber keinen Schimmer, wie ich das machen könnte. Geht das überhaupt?
Christian S. - Do 03.11.05 17:11
Ich würde das über eine Exception regeln, welche der Konstruktor auslöst.
Robert_G - Do 03.11.05 17:28
Du fängst jede Exception. Was erwartest du denn? :shock:
Lasse die Exception durchsickern und der Constructor wird rückgängig gemacht. Oder du nutzt eine statische Methode, die dir nix liefert.
Aber gegen nix zu prüfen anstatt schön gegen die Exception direkt prüfen zu können, ist doch Käse. ;)
btw:
Sowas hier...
C#-Quelltext
1: 2: 3:
| try { Miep(); } catch{} |
....gehört verboten. Falls du das öfters so hast solltest du mal FxCop rüberrennen lassen um die Stellen finden und korrigieren zu können.
Man kann spez. Exception ignorieren, und zwar die, die man erwartet und bei denen man somit weiß XYZ ist passiert.
Alles andere sind Exceptioons im wahren Sinne des Wortes und würde unvorhersehbare Bugs verursachen...
FinalFantasy - Fr 04.11.05 10:25
Öhm, ja, wenn ich die Exception durchsickern lasse, wird ja gleich das ganze Programm beendet, das ist auch nicht grad der Sinn der Sache.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!