Autor Beitrag
FinalFantasy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: Do 03.11.05 17:06 
ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 03.11.05 17:11 
Ich würde das über eine Exception regeln, welche der Konstruktor auslöst.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: 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...
ausblenden C#-Quelltext
1:
2:
3:
try
{ Miep(); }
catch{/*nix*/}
....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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: 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.