<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Konstruktor auch ohne Erfolg realisierbar?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ein simple c++ Frage. Kann ich einen Konstruktor auch so implementieren, dass bei einem Fehler innerhalb des Konstruktors( z.b. Fehler bei irgendwelchen Schnittstellen-Konfigurationen) dieser abgebrochen wird, und dann z.b. NULL zurück gegeben wird? Muss ich hier etwas spezielles beachten (z.B. bleibt dann trotzdem ein Objekt im Speicher zurück wenn ich den Konstruktor &quot;abbreche&quot;?)?</p>
<p>Danke<br />
Gustav</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185621/konstruktor-auch-ohne-erfolg-realisierbar</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 05:36:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185621.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Jun 2007 09:27:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 09:27:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ein simple c++ Frage. Kann ich einen Konstruktor auch so implementieren, dass bei einem Fehler innerhalb des Konstruktors( z.b. Fehler bei irgendwelchen Schnittstellen-Konfigurationen) dieser abgebrochen wird, und dann z.b. NULL zurück gegeben wird? Muss ich hier etwas spezielles beachten (z.B. bleibt dann trotzdem ein Objekt im Speicher zurück wenn ich den Konstruktor &quot;abbreche&quot;?)?</p>
<p>Danke<br />
Gustav</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314765</guid><dc:creator><![CDATA[Gustav Hummel]]></dc:creator><pubDate>Fri, 29 Jun 2007 09:27:43 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 09:32:12 GMT]]></title><description><![CDATA[<p>Wenn der Konstruktor regulaär beendet ist, hast du ein komplettes Objekt vorliegen. Um Fehler zu behandeln, bleiben dir nur zwei brauchbare Möglichkeiten:</p>
<ul>
<li>du definierst ein Flag im Objekt, ob es intakt ist (dann müssen alle anderen Methoden bei Aufruf dieses Flag abfragen, bevor sie irgendwas machen)</li>
<li>du beendest den Ctor nicht regulär (z.B. per exit() (mitunter etwas zu radikal) oder mit einer Exception)</li>
</ul>
]]></description><link>https://www.c-plusplus.net/forum/post/1314770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314770</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 29 Jun 2007 09:32:12 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 09:32:23 GMT]]></title><description><![CDATA[<p>es wird so ode so ein objekt erzeugt... du musst in deiner klasse ein flag setzen welcher du dann beim verwenden der klassen methoden etc. abfrägst und checkst ob das objekt gütlig ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314772</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Fri, 29 Jun 2007 09:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 09:36:32 GMT]]></title><description><![CDATA[<p>bei solch &quot;kritischen konstruktionen&quot; von objekten würd ich ne factory basteln, die instanzen des objekts liefert, oder wenn es nicht konstruiert werden konnte, halt nen null pointer.</p>
<p>fehler bei der konstruktion direkt im ctor zu behandeln find ich nicht so schön.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314774</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Fri, 29 Jun 2007 09:36:32 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 09:39:59 GMT]]></title><description><![CDATA[<p>Oder du behilfst dir einfach, in dem du in der Schnittstelle nen Rückgabewert einbaust, den dann auswertest und dann entscheidest, ob du das Objekt weiter verwendest oder nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314777</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Fri, 29 Jun 2007 09:39:59 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 09:53:19 GMT]]></title><description><![CDATA[<p>Also scheint wohl doch nicht so einfach zu sein wie ich dachte. Dann wird wohl meine bisherige Realisierung einfacher sein. Bisher läuft das so:</p>
<p>Konstruktor -&gt; lediglich private Variablen initialisieren<br />
init() Methode -&gt; reservieren von Speicher + Schnittstellen initialisieren/konfigurieren.<br />
restliche Methoden -&gt; prüfen ob Schnittstelle initialisiert ist. Erst dann weiter...</p>
<p>Gruß<br />
Gustav</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314790</guid><dc:creator><![CDATA[Gustav Hummel]]></dc:creator><pubDate>Fri, 29 Jun 2007 09:53:19 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:00:48 GMT]]></title><description><![CDATA[<p>Ja, das ist eine Methode (siehe mein Beitrag oben). Die Alternative wäre es, den Ctor im Fehlerfall über throw zu verlassen, dabei wird das Objekt auch wieder demontiert, das du gerade nicht anlegen konntest:</p>
<pre><code class="language-cpp">class test
{
public:
  test(int value)
  {
    if(value&lt;0) throw std::out_of_range(&quot;bitte keine negativen Werte angeben&quot;);
    ...
  }
};

...
try
{
  test t1(4711);
  test t2(-1);
  ...
}
catch(std::exception&amp; e)
{
  cerr&lt;&lt;&quot;Fehler: &quot;&lt;&lt;e.what();
}
</code></pre>
<p>Der Vorteil liegt auf der Hand - du kannst im weiteren Verlauf sicher sein, daß dein Objekt ordentlich initialisiert wurde. Auf der anderen Seite muß dein Programm die möglichen Exceptions auch abfangen und geeignet darauf reagieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314798</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:00:48 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:05:07 GMT]]></title><description><![CDATA[<p>Hmm, also da finde ich meine Variante besser.<br />
Wenn ich dich jetzt richtig verstanden habe, behälst du dein Objekt und beim Methodenaufruf bekommst du dann die Nachricht, ob die Aktion ausführbar ist oder nicht.</p>
<p>[Edit] CStoll war schneller. Tu einfach so, als ob der Beitrag hier vor seinem stehen würde. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> [/Edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314802</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:05:07 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:18:54 GMT]]></title><description><![CDATA[<p>Maffe001 schrieb:</p>
<blockquote>
<p>Hmm, also da finde ich meine Variante besser. ...[/Edit]</p>
</blockquote>
<p>Hmmm also ich finde CStolls Variante besser, weil man<br />
- nicht an x verschiendenen Stellen Gültigkeitsprüfungen einbauen muss (in der Klasse UND in jedem Nutzer),<br />
- man mit einem &quot;ungültigen Objekt&quot; sowieso nichts anfangen kann ... weshalb es sinnlos ist, eines zu erzeugen (wenn A eines erzeugt und B weitergibt ... was soll B dann machen, wenn es beim Aufruf einer Methode einen &quot;ungültiges Objekt&quot;-Error geliefert bekommt ?) und<br />
- die Aufrufer exceptions nur schwer &quot;vergessen&quot; können ... eine Returncodeabfrage dagegen ist schnell mal vergessen.</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314817</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:22:44 GMT]]></title><description><![CDATA[<p>Danke für die Beiträge. Ich werd mal etwas konkreter:</p>
<p>1. Hauptprogramm möchte ein Objekt der Klasse Test erzeugen.<br />
2. Test versucht eine Schnittstelle zu konfigurieren. Dabei Misserfolg soll Test es noch x-mal versuchen. Danach muss Test den Misserfolg weitergeben (z.B. Rückgabewert).<br />
3. Wenn Hauptprogramm den Misserfolg mitbekommt, soll das Objekt der Klasse Test gelöscht werden und mit einer Fehlerroutine fortgefahren werden.</p>
<p>Bei meiner Methode:<br />
1. Objekt erzeugen<br />
2. Objekt-initroutine bei bedarf bis zu x mal aufrufen<br />
3. wenn nicht erfolgreich -&gt; delete</p>
<p>Die Idee mit der factory hat sich gut angehört. Wie würde diese aussehen?<br />
so in etwa?:<br />
1. Objekt erzeugen (über factoryklasse?!)<br />
2. Factory behandelt das ganze wie oben(also objekt erzeugen + x-mal init()), bei Erfolg gibt sie Objekt zurück, bei Misserfolg NULL.<br />
2. prüfe auf Objekt = NULL</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314820</guid><dc:creator><![CDATA[Gustav Hummel]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:27:22 GMT]]></title><description><![CDATA[<p>[Edit]<br />
<strong><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a>:</strong><br />
[/Edit]<br />
Deswegen hab ich ja auch geschrieben, er solle so tun, als ob mein Beitrag über dem von CStoll steht. Ich wollte die Exceptionvariante nicht kritisieren oder meine als die bessere hinstellen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Ich persönlich mag Exceptions nicht. Ich hab's mir so angewöhnt. Und vergesse eigentlich auch keine Überprüfung.<br />
Ich denke mal, dass es halt wirklich nur eine Sache der Gewöhnung ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314825</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:27:22 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:26:36 GMT]]></title><description><![CDATA[<p>Ja also Exceptions würde ich auch gerne vermeiden. Bin auch kein Freund davon. Wenns ohne geht hät ich nix gegen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314827</guid><dc:creator><![CDATA[Gustav Hummel]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:26:36 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:28:12 GMT]]></title><description><![CDATA[<p>Maffe001 schrieb:</p>
<blockquote>
<p>Ich persönlich mag Exceptions nicht. Ich hab's mir so angewöhnt. Und vergesse eigentlich auch keine Überprüfung.</p>
</blockquote>
<p>&quot;Eigentlich nie&quot; heißt &quot;einmal in zwei Stunden&quot;, ja ja. Aber Dummheit, Trägheit und Sturheit sind eben nicht totzukriegen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314829</guid><dc:creator><![CDATA[Kenner der Scene 2]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:28:12 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:33:32 GMT]]></title><description><![CDATA[<p>Gustav Hummel schrieb:</p>
<blockquote>
<p>Die Idee mit der factory hat sich gut angehört. Wie würde diese aussehen?<br />
so in etwa?:<br />
1. Objekt erzeugen (über factoryklasse?!)<br />
2. Factory behandelt das ganze wie oben(also objekt erzeugen + x-mal init()), bei Erfolg gibt sie Objekt zurück, bei Misserfolg NULL.<br />
2. prüfe auf Objekt = NULL</p>
</blockquote>
<p>so ungefähr. das grundprinzip ist, dass die factory alle nötigen daten besorgt und sobald sie vorliegen, ein objekt erzeugt. d.h. deine klasse braucht keinen init ballast und auch kein exception handling etc. das macht alles die factory, und wenn das erzeugen erfolgreich möglich war, liefert sie nen schlankes, vollständiges objekt zurück. wenn also die daten nicht besorgt werden konnten, wurde auch zu keinem zeitpunkt versucht, ein objekt anzulegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314839</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:38:45 GMT]]></title><description><![CDATA[<p><strong>@Kenner....:</strong></p>
<p>Was soll ich da jetzt zu sagen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> Wie gut, dass jeder seine Meinung haben darf.</p>
<p>Nur mal so: Ich kann kein &quot;nie&quot; bei mir entdecken. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Getreu nach dem Motto: &quot;Nobody is perfect.&quot;, vergess ich die Überprüfung auch mal. Aber es ist die Ausnahme. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314845</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:38:45 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:41:20 GMT]]></title><description><![CDATA[<p>Maffe001 schrieb:</p>
<blockquote>
<p>Nur mal so: Ich kann kein &quot;nie&quot; bei mir entdecken. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Getreu nach dem Motto: &quot;Nobody is perfect.&quot;, vergess ich die Überprüfung auch mal. Aber es ist die Ausnahme. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Aber einen guten Grund, Exceptions nicht zu benutzen brauchst du offensichtlich auch nicht. Da müsstest du nicht ständig sinnlose Überprüfungen von sinnlosen Objekten durchführen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314850</guid><dc:creator><![CDATA[Kenner der Scene 2]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:41:20 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 10:49:18 GMT]]></title><description><![CDATA[<p><strong>@Kenner...:</strong></p>
<p>Also wenn du rumtrollen willst, warum tust du's nicht woanders?<br />
Du magst wahrscheinlich keinen Rosenkohl und trotzdem werd ich nicht versuchen ihn dir aufzuzwingen. Deine Begründung, warum du ihn nicht magst, wird eher dürftig ausfallen. Gut aber das ist dein Ding.</p>
<p><strong>@alle anderen:</strong></p>
<p>Sorry, dass ich da nochmal drauf eingestiegen bin. Intolleranz find ich einfach nur....<br />
Damit sind dann auch meine Reaktionen auf &quot;Kenner&quot; beendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314855</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Fri, 29 Jun 2007 10:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 11:56:29 GMT]]></title><description><![CDATA[<p>Ich finde die Variante besser, wo im Konstruktor kein Fehler erzeugt werden kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314917</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 29 Jun 2007 11:56:29 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 12:03:28 GMT]]></title><description><![CDATA[<p>Auch wenn ich dir nicht das Programmieren ohne Exceptions ausreden will, möchte ich hier nur mal die Gründe die für eine Exception sprechen hinstellen:</p>
<p>a) Wenn man Standardkonform programmiert, wird man zwangsweise Exceptions behandeln müssen (die STL wirft Exceptions, ebenso wie new).<br />
b) Exceptions sind Ausnahmefälle, keine Regeln, der Rückgabeparameter einer Funktion sollte so gewählt werden das er die Regelfälle sinnvoll abdeckt.<br />
c) Rückgabewerte darf man nicht vergessen, Exceptions kann man nicht vergessen (Sonst knallt es, wo beim Rückgabewert das Programm einfach irgendwas - ggf. sehr verkehrtes/schlimmes - tut).<br />
d) Exceptions muss man nicht zwingend am Ort des Auftretens behandeln, Rückgabewerte schon.<br />
e) Mit Exceptionhandling und Smartpointern kann man inkonsistente Daten nach einen Konstruktoraufruf leichter behandeln [bin kein Fan von der Ungarischen Notation, aber für die kurzform hier besser: m_ap=&gt; Autopointer/Smartpointer als Member]:</p>
<p><strong>Fall 1 mit Smartpointer&amp;Exceptionhandling</strong></p>
<pre><code class="language-cpp">Klasse::Klasse()
:   m_apObjekt1(new Objekt1()),
    m_apObjekt2(new Objekt2()),
    m_apObjekt3(new Objekt3())
{
}
</code></pre>
<p>Wenn nun bei der Objektanlage irgendeines Teilobjektes eine Exception auftritt, so werden alle vorherigen gelöscht, und der Konstruktor erstellt kein Objekt (sprich: kein Objekt oder ein Konsistentes).</p>
<p>Versuch das mal ohne Exceptionhandling mit wenigen Codezeilen sinnvoll nachzubauen (noch dazu wenn vielleicht noch mehr Teilobjekte dazukommen).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314921</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 29 Jun 2007 12:03:28 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 12:13:29 GMT]]></title><description><![CDATA[<p>ich bin kein fan von exceptions.</p>
<pre><code class="language-cpp">try
{
 // gewaltiger, ellenlanger code
}
catch(...){}

// weiter gehts
</code></pre>
<p>sie verleiten zu lazy coding. gedanken darüber machen, ob auch alles klappt? input überprüfen? ach egal, wenn was schief geht, wird schon irgendwo ne exception fliegen, die man ja abfangen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314929</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Fri, 29 Jun 2007 12:13:29 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 12:20:10 GMT]]></title><description><![CDATA[<p>Maffe001 schrieb:</p>
<blockquote>
<p>[Edit]<br />
...Ich wollte die Exceptionvariante nicht kritisieren oder meine als die bessere hinstellen....</p>
</blockquote>
<p>Das war mir klar ... aber ich wollte Deine Variante kritisieren und die Exceptionvariante als die bessere hinstellen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Was hast Du gegen exceptions ? Die sind genau für diesen Fall gemacht.</p>
<p>Ach ja: D.h. Du fragst auch bei printf() immer den Returncode ab ?</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314932</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 29 Jun 2007 12:20:10 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 12:19:18 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>...sie verleiten zu lazy coding....</p>
</blockquote>
<p>Inwieweit das ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Ich würde eher sagen: Mit exceptions kann man sich auf das Wesentliche konzentrieren ... versuch mal, ohne exceptions &quot;exceptions safety&quot; (= ein Kriterium einer stabilen Schnittstelle) umzusetzen ... da wirst Du Dir die Finger brechen - und letztlich eine Art exceptions (nur mit mehr Overhead) selbst programmieren.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314934</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 29 Jun 2007 12:19:18 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 12:30:04 GMT]]></title><description><![CDATA[<p>thordk schrieb:</p>
<blockquote>
<p>sie verleiten zu lazy coding.</p>
</blockquote>
<p>Wenn du ohne Exceptions arbeitest, ist das noch schlimmer. Vor allem wird dich niemand darauf aufmerksam machen, wenn du vergessen hast, einen Fehlerwert zu überprüfen (und was dein Programm in einem fehlerhaften Zustand macht, kann dir niemand sagen) - Exceptions fliegen dir ziemlich lautstark um die Ohren, wenn du versuchst, sie zu ignorieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314940</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 29 Jun 2007 12:30:04 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 13:15:07 GMT]]></title><description><![CDATA[<p><strong><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@simon2</a>:</strong></p>
<p>LOL Nein ich überprüfe nicht den Return von &quot;printf&quot;. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Ich überprüf ihn immer bei Sachen, die ich selbst geschrieben habe. Den traue ich natürlich nicht so ganz. Vielleicht ist diese Einstellung wirklich etwas blauäugig.</p>
<p>Hmpf, ich seh schon. Ich werd meine Einstellung zu Exceptions überdenken müssen. Allerdings bin ich immernoch der Meinung, dass man bei Objekten, die man nicht richtig initialisiert bekommt auch weiterhin mit Rückgabewerten arbeiten kann. Wenn euch jetzt ein Gegenbeispiel einfällt, dass sich nur mit Exceptions behandeln lässt, dann immer her damit. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>[Edit]Ui, ich hab grad den Beitrag von <strong>asc</strong> entdeckt. Sorry, ging in der Aufregung unter. Dann vergesst, was ich gesagt habe. Die Gründe leuchten ein. Gut ich werde nochmal darüber meditieren und mich mit Exceptions anfreunden. :D[/Edit]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314977</guid><dc:creator><![CDATA[Maffe001]]></dc:creator><pubDate>Fri, 29 Jun 2007 13:15:07 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 13:18:07 GMT]]></title><description><![CDATA[<p>Und wie soll ein Konstruktor etwas als Rückgabewert übergeben? Das einzige, was der zurückgeben kann, ist ein fertig konstruiertes Objekt, also bleibt als Alternative zu einer Exception nur, this in einen Zombie-Status zu versetzen. Und wenn jede Methode erst überprüfen muß, ob sie auf ein intaktes Objekt angewendet wurde, bremst du damit dein gesamtes Programm unnötig aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314988</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 29 Jun 2007 13:18:07 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor auch ohne Erfolg realisierbar? on Fri, 29 Jun 2007 13:24:22 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Und wie soll ein Konstruktor etwas als Rückgabewert übergeben? Das einzige, was der zurückgeben kann, ist ein fertig konstruiertes Objekt, also bleibt als Alternative zu einer Exception nur, this in einen Zombie-Status zu versetzen. Und wenn jede Methode erst überprüfen muß, ob sie auf ein intaktes Objekt angewendet wurde, bremst du damit dein gesamtes Programm unnötig aus.</p>
</blockquote>
<p>Du würdest fstream anders realisieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1314993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1314993</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 29 Jun 2007 13:24:22 GMT</pubDate></item></channel></rss>