<?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[Exception oder Rückgabewert?]]></title><description><![CDATA[<p>Mich würde mal interessieren, wie ihr programmiert. Nutzt ihr eher Exceptions mit Try/Catch-Blöcken oder überprüft ihr lieber die Rückgabewerte von Funktionen, wenn´s geht (klar, ein Konstruktor hat beispielsweise keinen Rückgabe). Was ist euch lieber, wenn ihr eine fertige Bibliotheken nutzt, was programmiert ihr lieber, was ist eurer Meinung nach &quot;sauberer&quot;? Was gibt´s an Gründen für und gegen Exceptions?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/94602/exception-oder-rückgabewert</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Jul 2026 14:20:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/94602.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Dec 2004 18:30:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Fri, 10 Dec 2004 18:30:02 GMT]]></title><description><![CDATA[<p>Mich würde mal interessieren, wie ihr programmiert. Nutzt ihr eher Exceptions mit Try/Catch-Blöcken oder überprüft ihr lieber die Rückgabewerte von Funktionen, wenn´s geht (klar, ein Konstruktor hat beispielsweise keinen Rückgabe). Was ist euch lieber, wenn ihr eine fertige Bibliotheken nutzt, was programmiert ihr lieber, was ist eurer Meinung nach &quot;sauberer&quot;? Was gibt´s an Gründen für und gegen Exceptions?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670525</guid><dc:creator><![CDATA[Evil Azrael]]></dc:creator><pubDate>Fri, 10 Dec 2004 18:30:02 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Fri, 10 Dec 2004 18:35:28 GMT]]></title><description><![CDATA[<p>exceptions nur dann, wenn ein alternatives false im rückgabewert derselben funktion bedeuten würde, dass ich ein ernsthaftes problem habe, ansonsten reicht mir der rückgabewert.</p>
<p>meiner meinung nach sollten exceptions sparsam verwendet werden, für korrigierbare fehler sind sie einfach zu langsam und zu schwierig zu handeln.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670527</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Fri, 10 Dec 2004 18:35:28 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Fri, 10 Dec 2004 18:35:29 GMT]]></title><description><![CDATA[<p>hmm, lass mich überlegen...wenn eine Funktion bereits einen Wert returnen soll, muss ich einen Fehler anderweitig bemerkbar machen...</p>
<p>Exceptions für Marginales wie File-EOF oder Zeugs benutze ich nicht, sondern wirklich nur für Fehler, die das Programm nicht mehr fortfahren lassen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670528</guid><dc:creator><![CDATA[randa]]></dc:creator><pubDate>Fri, 10 Dec 2004 18:35:29 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Fri, 10 Dec 2004 21:50:04 GMT]]></title><description><![CDATA[<p>Auf jeden Fall nur für &quot;richtige&quot; Fehler, bwz. für Sonderfälle wie Konstruktoren oder festgelegte Funktionsschnittstellen, überladene Operatoren oder redefinierte Funktionen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670627</guid><dc:creator><![CDATA[_Till_]]></dc:creator><pubDate>Fri, 10 Dec 2004 21:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Fri, 10 Dec 2004 22:21:59 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Rückgabewerte für Fehler, wenn der Fehler im weiteren Verlauf behoben werden kann.</p>
<p>Exceptions für Fehler, die zwar bestimmbar sind, aber auf jeden Fall zum geordneten Abbruch des Programms führen sollen</p>
<p>asserts für alle unerwarteten Fehler, nach denen es einfachen nicht weiter gehen kann</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670639</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 10 Dec 2004 22:21:59 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 09:55:38 GMT]]></title><description><![CDATA[<p>Exceptions sind aber nicht langsamer. Ganz im Gegenteil, bei Return-Werten machst du immer einer if-Abfrage, selbst wenn kein Fehler auftritt. Bei Exceptions kommst du in den catch-Block, nur wenn ein Fehler auftritt. Wenn kein Fehler auftritt, geht es ganz normal weiter im Programm. Das werfen einer Exception ist aber performancemäßig also völlig vertretbar.</p>
<p>Es gibt ja mehrere Exception-Kategorien. Z.B. Resourcen-Fehler (Drucker nicht ansprechbar) sollte man mit einer Exception weiter werfen. Benutzerfehler, z.B. eine falsch eingegebene PIN beim Geldautomaten, sollte man nicht als Exception werfen. Denn es ist ja kein unerwarteter Ausnahmefehler! Aber das ein Drucker auf einmal nicht ansprechbar ist, sollte man als &quot;unerwartet&quot; einordnen. OK, dann gibts halt noch Logicfehler, die man auch als Exceptions wirft. Laufzeitfehler werden eh autom. geworfen.</p>
<p>Exceptions haben außerdem noch den Vorteil, das man sie weiter reichen kann, wenn man selber nicht weiß, wie man auf einen Fehler regieren muß. Wie soll das bei einem Return-Wert vernünftig funktionieren? Da weiß doch am Ende niemand, was eigentlich falsch lief.</p>
<p>An Performance würde ich nicht meine Gedanken verschwenden, wenn es um Exceptions geht. Dafür relativiert sich nämlich alles wieder, was die Mächtigkeit von Exceptions angeht. Und Exceptions benötigen nur dann Performance, wenn sie wirklich geworfen werden. Wenn keine Fehler auftauchen, ist es sogar letztendlich schneller als eine if-Abfrage bei einem Return-Wert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670745</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sat, 11 Dec 2004 09:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 10:49:11 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Wenn kein Fehler auftritt, geht es ganz normal weiter im Programm. Das werfen einer Exception ist aber performancemäßig also völlig vertretbar.</p>
</blockquote>
<p>Ne, das werfen ist verdammt lahm - nur das nicht werfen ist verdammt schnell <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 />
Und in einem erfolgreichen Programmdurchlauf fliegt idR keine Exception - man ist also idR mit Exception sogar schneller als ohne <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>
<blockquote>
<p>Denn es ist ja kein unerwarteter Ausnahmefehler!</p>
</blockquote>
<p>Genau das bringt es auf den Punkt -&gt; Exception sind Ausnahmen <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>
<blockquote>
<p>OK, dann gibts halt noch Logicfehler, die man auch als Exceptions wirft.</p>
</blockquote>
<p>Ich werfe idR nie einen std::logic_error - ich mache da eigentlich immer ein ASSERT()</p>
<blockquote>
<p>Exceptions haben außerdem noch den Vorteil, das man sie weiter reichen kann, wenn man selber nicht weiß, wie man auf einen Fehler regieren muß.</p>
</blockquote>
<p>Noch ein wichtiger Punkt <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="👍"
    /><br />
Exception erlauben das behandeln dort wo es Sinn macht und nicht dort wo der Fehler auftrat.</p>
<blockquote>
<p>Und Exceptions benötigen nur dann Performance, wenn sie wirklich geworfen werden.</p>
</blockquote>
<p>Leider nicht - stack unwinding code ist nicht gratis <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> aber allemale billiger als 5 if (die ja alle bedingte sprünge beinhaltet -&gt; goto ist böse :p)</p>
<blockquote>
<p>Wenn keine Fehler auftauchen, ist es sogar letztendlich schneller als eine if-Abfrage bei einem Return-Wert!</p>
</blockquote>
<p>Full ACK<br />
mal davon abgesehen, dass man return Werte gerne ignoriert <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="😉"
    /> um eine Exception zu ignorieren muss man schon explizit catch(...){} schreiben. Und sowas fällt beim Code-Review dann auf, und man kann dem Programmierer dann eine auf die Finger geben <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/670780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670780</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 11 Dec 2004 10:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 11:52:32 GMT]]></title><description><![CDATA[<blockquote>
<p>Exceptions für Fehler, die zwar bestimmbar sind, aber auf jeden Fall zum geordneten Abbruch des Programms führen sollen</p>
</blockquote>
<p>Nein. Woher nimmst du diese Weisheit bitte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670804</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 11 Dec 2004 11:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 12:47:17 GMT]]></title><description><![CDATA[<p>ich nehm exceptions am liebsten in solchen fällen</p>
<pre><code class="language-cpp">func()
{
  //funcinit

  //mach was  
  if ( fehler )
  {
    //funcdeinit
    //return
  }
  //mach was  
  if ( fehler )
  {
    //funcdeinit
    //return
  }
  //mach was  
  if ( fehler )
  {
    //funcdeinit
    //return
  }
  //funcdeinit
  //return
}
</code></pre>
<pre><code class="language-cpp">func()
{
  //funcinit
  try()
  {
    //mach was  
    if ( fehler )
      throw;
    //mach was  
    if ( fehler )
      throw;
    //mach was  
    if ( fehler )
      throw;
  }
  catch()
  {
  }
  //funcdeinit
  //return
}
</code></pre>
<p>gutes beispiel is wenn man z.b. ne datei aufmacht oder speicher allokiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670842</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Sat, 11 Dec 2004 12:47:17 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 13:26:43 GMT]]></title><description><![CDATA[<p>Sovok schrieb:</p>
<blockquote>
<p>gutes beispiel is wenn man z.b. ne datei aufmacht oder speicher allokiert</p>
</blockquote>
<p>Bitte sag, dass das nicht dein ernst ist.</p>
<p>da kann man ja gleich nur die return werte auslesen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670877</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 11 Dec 2004 13:26:43 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 13:38:38 GMT]]></title><description><![CDATA[<p>ich benutz es in dem fall nich um returnwerte nicht auslesen zu müssen, sondern um zeilen zu sparn</p>
<p>die einzige alternative die mir in dem fall einfällt is goto aber des benutz ich aus prinzip ned</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670882</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Sat, 11 Dec 2004 13:38:38 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 13:46:34 GMT]]></title><description><![CDATA[<blockquote>
<p>.<br />
Noch ein wichtiger Punkt <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="👍"
    /><br />
Exception erlauben das behandeln dort wo es Sinn macht und nicht dort wo der Fehler auftrat.</p>
</blockquote>
<p>das ist einerseits richtig, aber in 80% der fälle können fehler vor ort gelöst werden,und da hab ich persönlich doch eher ein if, in dem ich dann selber ne exception schmeissen kann, wenns wirklich nicht mehr an der stelle weitergehen kann. das problem an ner exception ist ja, dass man nicht mehr zurück in den code springen kann, wenn der fehler gelöst wurde, das macht diese ausnahmebehandlung nochmal teurer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670893</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670893</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sat, 11 Dec 2004 13:46:34 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 14:17:52 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<blockquote>
<p>Exceptions für Fehler, die zwar bestimmbar sind, aber auf jeden Fall zum geordneten Abbruch des Programms führen sollen</p>
</blockquote>
<p>Nein. Woher nimmst du diese Weisheit bitte?</p>
</blockquote>
<p>zum Beispiel wenn eine externe Datei, ein Registry-Schlüssel oder ein Server nicht erreichbar ist. Dann kann ich eine auch für den User sinnvolle Fehlermeldung ausgeben und das Programm auf jeden Fall beenden (wenn übergreifende try-Behandlung gibt)</p>
<p>Mit nicht bestimmbar meine ich, wenn eine Funktion mit</p>
<pre><code class="language-cpp">int foo(TClass *Class)
</code></pre>
<p>mit Class == NULL aufgerufen wird, obwohl ein solcher Wert gar nicht verarbeitet werden kann.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670915</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 11 Dec 2004 14:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 14:26:35 GMT]]></title><description><![CDATA[<p>Dafür nimmt man dann assert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670925</guid><dc:creator><![CDATA[assert.]]></dc:creator><pubDate>Sat, 11 Dec 2004 14:26:35 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 14:30:52 GMT]]></title><description><![CDATA[<p>akari schrieb:</p>
<blockquote>
<p>Hallo</p>
<p>Mit nicht bestimmbar meine ich, wenn eine Funktion mit</p>
<pre><code class="language-cpp">int foo(TClass *Class)
</code></pre>
<p>mit Class == NULL aufgerufen wird, obwohl ein solcher Wert gar nicht verarbeitet werden kann.</p>
<p>bis bald<br />
akari</p>
</blockquote>
<p>das is meiner meinung nach der job von nem assert weil der input vom programmierer kommt und der programmierer sicherzustellen hat, dass er keine null pointer übergibt</p>
<pre><code class="language-cpp">int foo(TClass *Class)
{
  assert ( Class != NULL );
}
</code></pre>
<p>in der theorie könnte sich der übergabewert im debug und release modus unterscheiden falls dem system der speicher ausgeht</p>
<p>in der praxis gibts keinen unterschied wenns keine speicherintensive anwendung is</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670927</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Sat, 11 Dec 2004 14:30:52 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 14:29:23 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Sovok schrieb:</p>
<blockquote>
<p>gutes beispiel is wenn man z.b. ne datei aufmacht oder speicher allokiert</p>
</blockquote>
<p>Bitte sag, dass das nicht dein ernst ist.<br />
da kann man ja gleich nur die return werte auslesen...</p>
</blockquote>
<p>wieso sollte man das nicht so machen? das problem ist ja, das alle standart-libs statt exception return wert liefern. ( auser der STL vieleicht )<br />
ich benutzt exceptions häufig um das HRESULT aus directx auszuwerten. eine einzige exception-klasse die zu dem HRESULT einen info-text ausgibt. und in der winmain steht dann ein try catch mit fehlerdialog im catch block.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670928</guid><dc:creator><![CDATA[DEvent]]></dc:creator><pubDate>Sat, 11 Dec 2004 14:29:23 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 14:29:28 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Dafür nimmt man dann assert.</p>
</blockquote>
<p>Exakt. Das habe ich auch in meinem ersten Post so dargestellt, habe es nur in der Erläuterung vergessen zu erwähnen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670929</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 11 Dec 2004 14:29:28 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 14:40:55 GMT]]></title><description><![CDATA[<p>DEvent schrieb:</p>
<blockquote>
<p>wieso sollte man das nicht so machen? das problem ist ja, das alle stan****-libs statt exception return wert liefern. ( auser der STL vieleicht )</p>
</blockquote>
<p>bei den IOStreams kann man exceptions einschalten und C Libraries wrappt man.<br />
Und die anderen C++ Standard Funktionen können kaum fehlschlagen...</p>
<p>wenn man<br />
if(foo()) throw;<br />
if(foo2()) throw;<br />
schreibt, dann kann man sich exceptions ja gleich sparen - sie bringen hier nur verdammt wenig.</p>
<p>ein<br />
foo();<br />
foo2();<br />
ist hier viel schöner und eleganter (zudem kann man auch noch bessere exception werfen, weil man GetLastError()/errno oder sonstwas auswerten kann...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670934</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 11 Dec 2004 14:40:55 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 15:00:25 GMT]]></title><description><![CDATA[<p>Merkregel: Fasse nie eine C-API roh an. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /> Wrap it up! <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/670942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670942</guid><dc:creator><![CDATA[volkart]]></dc:creator><pubDate>Sat, 11 Dec 2004 15:00:25 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 15:02:49 GMT]]></title><description><![CDATA[<p>Sovok schrieb:</p>
<blockquote>
<p>ich benutz es in dem fall nich um returnwerte nicht auslesen zu müssen, sondern um zeilen zu sparn</p>
<p>die einzige alternative die mir in dem fall einfällt is goto aber des benutz ich aus prinzip ned</p>
</blockquote>
<p>Ja ganz toll: Exceptions als Ersatz für das (teilweise zu Recht) verpönte goto zu benutzen... <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/670944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670944</guid><dc:creator><![CDATA[Walli]]></dc:creator><pubDate>Sat, 11 Dec 2004 15:02:49 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 15:35:45 GMT]]></title><description><![CDATA[<p>Prüft ihr pointer generell mit Assert? Ich prüfe diese immer, wenn sie NULL sein können mit nem einfachen <strong>if (!p) /*mach irgendwas*/</strong> und Asserts verwende ich nur zum prüfen von Arraygrenzen usw. oder wenn nen Zeiger wirklich niemals NULL sein kann.</p>
<p>Exceptions verwende ich dann wenn es Sinn macht z.B. wenn der Rückgabewert kein Fehlercode ist sondern ein Wert, oder wenn es wirklich eine Ausnahme ist, z.B. wenn die Rechte für eine Operation fehlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670961</guid><dc:creator><![CDATA[SirLant]]></dc:creator><pubDate>Sat, 11 Dec 2004 15:35:45 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 16:26:45 GMT]]></title><description><![CDATA[<p>MaSTaH schrieb:</p>
<blockquote>
<p>Sovok schrieb:</p>
<blockquote>
<p>ich benutz es in dem fall nich um returnwerte nicht auslesen zu müssen, sondern um zeilen zu sparn</p>
<p>die einzige alternative die mir in dem fall einfällt is goto aber des benutz ich aus prinzip ned</p>
</blockquote>
<p>Ja ganz toll: Exceptions als Ersatz für das (teilweise zu Recht) verpönte goto zu benutzen... <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>
</blockquote>
<p>ne der wesentliche unterschied is, dass man per goto überall hinspringen kann wohingegen die exception zum ende des try blocks springt<br />
find ich wesentlich definierter</p>
<p>aber gehen wir mal zum spass von ner speicherintensiven anwendung aus bei der keine exceptions benutzt werden dürfen</p>
<pre><code class="language-cpp">char* p1=NULL,p2=NULL,p3=NULL;

//mach was
p1 = new char[/*variabel*/];
if ( p1 == NULL )
  //return
//mach was
p2 = new char[/*variabel*/];
if ( p1 == NULL )
  //return
//mach was
p3 = new char[/*variabel*/];
if ( p1 == NULL )
  //return
</code></pre>
<p>wie würdest du hier am besten sicherstellen, dass aufgeräumt wird und gleichzeitig redundanten code vermeiden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670985</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Sat, 11 Dec 2004 16:26:45 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 16:31:10 GMT]]></title><description><![CDATA[<p>Indem ich SmartPointer verwende <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 <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>
<p>mfg JJ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670988</guid><dc:creator><![CDATA[John Doe]]></dc:creator><pubDate>Sat, 11 Dec 2004 16:31:10 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 16:37:45 GMT]]></title><description><![CDATA[<p>SirLant schrieb:</p>
<blockquote>
<p>Prüft ihr pointer generell mit Assert? Ich prüfe diese immer, wenn sie NULL sein können mit nem einfachen <strong>if (!p) /*mach irgendwas*/</strong> und Asserts verwende ich nur zum prüfen von Arraygrenzen usw. oder wenn nen Zeiger wirklich niemals NULL sein kann.</p>
<p>Exceptions verwende ich dann wenn es Sinn macht z.B. wenn der Rückgabewert kein Fehlercode ist sondern ein Wert, oder wenn es wirklich eine Ausnahme ist, z.B. wenn die Rechte für eine Operation fehlen.</p>
</blockquote>
<p>angenommen die funktion wird nicht exportiert und ich bin der einzige der damit programmiert dann ja</p>
<p>ansonsten nehm ich beides</p>
<p>per assert bin ich dann zur laufzeit schnell informiert in welcher zeile ich mist gebaut hab<br />
if an sich nur als schutz gegen unsachgemäße handhabung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670992</guid><dc:creator><![CDATA[Sovok]]></dc:creator><pubDate>Sat, 11 Dec 2004 16:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 16:45:25 GMT]]></title><description><![CDATA[<p>Sovok schrieb:</p>
<blockquote>
<p>wie würdest du hier am besten sicherstellen, dass aufgeräumt wird und gleichzeitig redundanten code vermeiden?</p>
</blockquote>
<p>Mal abgesehen davon, dass new eine Exception wirft...</p>
<pre><code class="language-cpp">//mach was
auto_ptr&lt;foo&gt; p1(new Foo());
auto_ptr&lt;foo&gt; p2(new Foo());
auto_ptr&lt;foo&gt; p3(new Foo());
</code></pre>
<p>RAII lässt grüßen...</p>
<p>Resourcen roh anfassen ist doof.<br />
Notfalls gibt es ja auch noch nen StackGuard...</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4882">@SirLant</a><br />
Was machst du denn, wenn der Zeiger 0 ist? Wie verhält sich dein Programm dann? Einfach return; damit man den Fehler schön leicht ignorieren kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/670998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/670998</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 11 Dec 2004 16:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder Rückgabewert? on Sat, 11 Dec 2004 16:48:16 GMT]]></title><description><![CDATA[<p>Ich würde immer noch SmartPointer verwenden.<br />
Liest den keiner meine Postings ( <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="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> <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>
<p>mfg JJ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/671002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/671002</guid><dc:creator><![CDATA[John Doe]]></dc:creator><pubDate>Sat, 11 Dec 2004 16:48:16 GMT</pubDate></item></channel></rss>