Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Angeben, dass erstellen eines Objekts fehl schlug

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.05.2007, 23:05 Uhr
PaRu



in meiner main methode erstelle ich ein objekt. der konstruktor des objekts führt einige methoden aus, die fehl schlagen können. nun möchte ich, dass der konstruktor, der keinen rückgabewert hat, dies an die main methode nach außen signalisiert. ich hatte da an soetwas wie this = NULL; gedacht und in der main methode wird dann überprüft, dass der zeiger auf das objekt NULL ist. leider hat der der compiler bei this = NULL; gemeckert. wie geht das richtig?
--
Gruß Patrick
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.05.2007, 23:18 Uhr
Blubber2063



So gar nicht, dafür gibts Exceptions, du lässt den Konstruktor beim Fehlschlag eine werfen und fängst sie in der main ab und reagierst dann dort auf den Fehler.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.05.2007, 09:47 Uhr
PaRu



wie geht das denn, dass man exceptions über mehrere funktionen durch reicht. ich hab im netz nur beispiele gefunden, wo in der selben funktion exceptions behandelt wurden.
--
Gruß Patrick
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.05.2007, 10:35 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, du kannst halt sowas machen:


C++:

class C
{
public:
   C() { throw std::exception("blablubb"); }
};

int function()
{
   try {
   C *c = new C();
   } catch(std::exception &e)
  {
      // fehler abfangen
  }
}



wenn dus durch mehrere funktion durchwerfen willst:


C++:
int function()
{
   try {
      function2();
   } catch(std::exception &e)
  {
      // fehler abfangen
  }
}

int function2()
{
   C *c = new C(); // hier wird die exception geworfen, wird aber erst oben gefangen
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.05.2007, 11:38 Uhr
ao

(Operator)



Zitat von PaRu:
der konstruktor des objekts führt einige methoden aus, die fehl schlagen können.

Was sind das für Fehlschläge? Echte Ausnahmefälle, oder kommt das unter Normalbedingungen durchaus vor? IMHO sind Exceptions - wie der Name schon sagt - für Ausnahmesituationen erfunden worden und nicht, damit Konstruktoren x-beliebige Fehler melden können.

Meiner Meinung nach sollte man im Konstruktor nur Sachen machen, die nach menschlichem Ermessen sicher klappen (fürs letzte Restrisiko gibts dann die Exception, aber nur dafür!). Die Dinge, die real schiefgehen können, gehören in eine Initialize-Methode.

Gruß,
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.05.2007, 11:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


da geb ich ao natürlich recht - unter der Annahme das es eben für Ausnahmen gedacht war - an was anderes denkt ein Normal-Unsterblicher wie ich ja nicht mehr ;P
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: