<?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[Wann assert benutzen, wann Exception werfen und wann Fehlercodes verwenden?]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>gibt es sinnvolle Richtlinien dafür, wann man assert verwenden sollte, wann man lieber eine Exception wirft oder einen Fehlercode zurückgibt?</p>
<p>Ein Fall, der mir spontan einfällt, wo man wahrscheinlich asserts verwenden würde: wenn es schnell gehen muss und man sich die Prüfung eines Arguments (z.B. Array-Index) nur im Debug-Build leisten kann und an das Werfen einer Exception gar nicht erst zu denken ist. Im Release-Build hätte man dann undefiniertes Verhalten, aber dafür auch maximale Geschwindigkeit ...</p>
<pre><code class="language-cpp">int&amp; operator [](size_t index) const
{
    assert(index &lt; mySize);

    // oder:

    if(index &gt;= mySize) throw IndexOutOfBoundsError(&quot;index&quot;, index, 0, mySize);

    // fortfahren
    // ...
}
</code></pre>
<p>assert vielleicht auch nur für klasseninterne Integritätsprüfungen (Invarianten)?</p>
<p>Dann gibt es ja noch die Möglichkeit, Fehler durch Fehlercodes zu übermitteln. Also im einfachsten Fall ein bool-Rückgabewert, der angibt, ob die Funktion erfolgreich war oder nicht.</p>
<p>Sollte man Fehlercodes in C++ überhaupt noch verwenden, oder sollte man alles mit Exceptions machen? Vorteil von den Exceptions ist ja, dass man sie nicht einfach ignorieren kann und dass man viele Infos hineinpacken kann, die man in einen simplen Fehlercode nicht reinkriegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193108/wann-assert-benutzen-wann-exception-werfen-und-wann-fehlercodes-verwenden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 19:08:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193108.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Sep 2007 06:53:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wann assert benutzen, wann Exception werfen und wann Fehlercodes verwenden? on Sat, 22 Sep 2007 07:06:01 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>gibt es sinnvolle Richtlinien dafür, wann man assert verwenden sollte, wann man lieber eine Exception wirft oder einen Fehlercode zurückgibt?</p>
<p>Ein Fall, der mir spontan einfällt, wo man wahrscheinlich asserts verwenden würde: wenn es schnell gehen muss und man sich die Prüfung eines Arguments (z.B. Array-Index) nur im Debug-Build leisten kann und an das Werfen einer Exception gar nicht erst zu denken ist. Im Release-Build hätte man dann undefiniertes Verhalten, aber dafür auch maximale Geschwindigkeit ...</p>
<pre><code class="language-cpp">int&amp; operator [](size_t index) const
{
    assert(index &lt; mySize);

    // oder:

    if(index &gt;= mySize) throw IndexOutOfBoundsError(&quot;index&quot;, index, 0, mySize);

    // fortfahren
    // ...
}
</code></pre>
<p>assert vielleicht auch nur für klasseninterne Integritätsprüfungen (Invarianten)?</p>
<p>Dann gibt es ja noch die Möglichkeit, Fehler durch Fehlercodes zu übermitteln. Also im einfachsten Fall ein bool-Rückgabewert, der angibt, ob die Funktion erfolgreich war oder nicht.</p>
<p>Sollte man Fehlercodes in C++ überhaupt noch verwenden, oder sollte man alles mit Exceptions machen? Vorteil von den Exceptions ist ja, dass man sie nicht einfach ignorieren kann und dass man viele Infos hineinpacken kann, die man in einen simplen Fehlercode nicht reinkriegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370486</guid><dc:creator><![CDATA[Absynth]]></dc:creator><pubDate>Sat, 22 Sep 2007 07:06:01 GMT</pubDate></item><item><title><![CDATA[Reply to Wann assert benutzen, wann Exception werfen und wann Fehlercodes verwenden? on Sat, 22 Sep 2007 06:59:31 GMT]]></title><description><![CDATA[<p>es gab da sone regel die etwa so lautete:</p>
<p>Fehler, die vom Benutzer erzeugt werden können wie bspw. datei nciht gefunden, Eingabewert in falschem Bereich oder falsches Dateiformat etc. sollten mit Exceptions gefangen werden.</p>
<p>Fehler, die vom Programmierere gemacht werden, also index out of bounds, null-zeiger etc. werden mit asserts behandelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370490</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370490</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 22 Sep 2007 06:59:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wann assert benutzen, wann Exception werfen und wann Fehlercodes verwenden? on Sat, 22 Sep 2007 07:06:44 GMT]]></title><description><![CDATA[<p>Danke schonmal, Maxi, ich habe meine ursprüngliche Frage noch um eine dritte Möglichkeit erweitert <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/1370491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370491</guid><dc:creator><![CDATA[Absynth]]></dc:creator><pubDate>Sat, 22 Sep 2007 07:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wann assert benutzen, wann Exception werfen und wann Fehlercodes verwenden? on Sat, 22 Sep 2007 09:13:08 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2470">@Maxi</a>: Schonmal daran gedacht, daß Index-Überschreitungen auch vom Nutzer verursacht werden könnten?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/15839">@Absynth</a>: Fehlercodes solltest du in C++ nicht verwenden - da hast du keine Kontrolle darüber, ob jemand darauf reagiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370538</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 22 Sep 2007 09:13:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wann assert benutzen, wann Exception werfen und wann Fehlercodes verwenden? on Sat, 22 Sep 2007 09:14:17 GMT]]></title><description><![CDATA[<p>find exceptions schöner als fehlercodes. fehlercodes haben zwei nachteile:<br />
- wie bereits erwähnt: man kann sie viel zu leicht ignorieren<br />
- um rauszufinden, was die fehlercodes einer funktion bedeuten, muss man womöglich erstmal in die funktion reingucken oder nach defines suchen. exceptions sind typisiert. wenn ich also eine indexoutofbounds exception erhalte, weiss ich sofort, was das zu bedeuten hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370540</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 22 Sep 2007 09:14:17 GMT</pubDate></item><item><title><![CDATA[Reply to Wann assert benutzen, wann Exception werfen und wann Fehlercodes verwenden? on Sat, 22 Sep 2007 09:15:55 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2470">@Maxi</a>: Schonmal daran gedacht, daß Index-Überschreitungen auch vom Nutzer verursacht werden könnten?</p>
</blockquote>
<p>in einer endnutzer applikation? dann ist es auf nen programmierfehler zurückzuführen <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/1370541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370541</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Sat, 22 Sep 2007 09:15:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wann assert benutzen, wann Exception werfen und wann Fehlercodes verwenden? on Sat, 22 Sep 2007 09:16:06 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: Ich denke, dass indexüberschreitungen eher intern geschehen. Wenn ich den Benutzer frage, welchen Datensatz er haben will, dann muss der vorherige Teil sagen, das ist ein falscher Index. In einem array oder vector bspw. hat ein throw bei indexüberschreitung nichts zu suchen. Meine Meinung. Da dann doch lieber ein assert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370542</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 22 Sep 2007 09:16:06 GMT</pubDate></item></channel></rss>