<?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 Exceptions]]></title><description><![CDATA[<p>Hallo,<br />
wann ist es sinnvoll Exceptions zu nutzen und wann sollte man Fehler durch &quot;normalen&quot; Code abfangen.<br />
Wenn z.B. ein std::fstream eine Datei nicht öffnen kann, wird keine Exception geworfen, sondern ein objektinterner Wert verändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306669/wann-exceptions</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 11:55:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306669.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Aug 2012 01:23:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wann Exceptions on Sat, 04 Aug 2012 01:23:17 GMT]]></title><description><![CDATA[<p>Hallo,<br />
wann ist es sinnvoll Exceptions zu nutzen und wann sollte man Fehler durch &quot;normalen&quot; Code abfangen.<br />
Wenn z.B. ein std::fstream eine Datei nicht öffnen kann, wird keine Exception geworfen, sondern ein objektinterner Wert verändert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238555</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Sat, 04 Aug 2012 01:23:17 GMT</pubDate></item><item><title><![CDATA[Reply to Wann Exceptions on Sat, 04 Aug 2012 01:52:18 GMT]]></title><description><![CDATA[<p>Immer dann, wenn die eine Methode dir das Leben leichter macht als die andere.<br />
Bei Streams finde ich in vielen Fällen Exceptions angebrachter, da du beim Lesen oft viele Werte (oder nur einzelne Bytes oder gar Bits) hintereinander aus dem Stream liest und du aller Wahrscheinlichkeit nach beim ersten Fehler (I/O-Fehler oder vorzeitiges Ende des Streams) ganz abbrechen möchtest - Exceptions sind da weitaus praktischer als ständig den Streamstatus auf Fehler abzufragen. Vielleicht liest du Textdateien ein und musst verschiedene Strings zu Zahlen und anderen Objekten konvertieren - auch hier kannst du Exceptions im Fehlerfall werfen und das wird alles zusammen mit Lesefehlern an zentraler Stelle abgefangen.</p>
<p>Es gibt aber auch andere Situationen, in denen dir vielleicht völlig egal ist, ob eine Operation erfolgreich war oder nicht und du daher nicht mit Exceptions belästigt werden willst. Oder Situationen, in denen du lieber einen Defaultwert statt einer Exception haben möchtest (z.B. bei lexical_cast, wenn du gerade <em>nicht</em> Datenstrukturen aus einem Stream liest).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238559</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sat, 04 Aug 2012 01:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wann Exceptions on Sat, 04 Aug 2012 19:34:29 GMT]]></title><description><![CDATA[<p>Wurstinator schrieb:</p>
<blockquote>
<p>Wenn z.B. ein std::fstream eine Datei nicht öffnen kann, wird keine Exception geworfen, sondern ein objektinterner Wert verändert.</p>
</blockquote>
<p>Wenn du Bitte sagst wirft dir der Stream auch eine Exception:<br />
<a href="http://www.cplusplus.com/reference/iostream/ios/exceptions/" rel="nofollow">http://www.cplusplus.com/reference/iostream/ios/exceptions/</a></p>
<blockquote>
<p>Hallo,<br />
wann ist es sinnvoll Exceptions zu nutzen und wann sollte man Fehler durch &quot;normalen&quot; Code abfangen.</p>
</blockquote>
<p>Wenn etwas einen &quot;Fehler&quot; darstellt, dann solltest du eine Exception werfen.<br />
Wenn etwas &quot;erwarteterweise&quot; passieren kann, dann solltest du keine Exception werfen.</p>
<p>Die beiden Bedingungen schliessen sich jetzt gegenseitig natürlich nicht aus.<br />
Das heisst aber nicht dass man in Fällen wo beides zutrifft einfach würfeln sollte, sondern dass man in den Fällen dann beide Möglichkeiten anbieten sollte.</p>
<p>Oft liest man dass man statt dessen lieber eine Möglichkeit anbieten sollte vorher abzuchecken ob das was man tun möchte auch möglich ist. z.B. vorher gucken ob das File überhaupt da ist, und dann erst versuchen es aufzumachen.<br />
mMn. ist das aber Quatsch. Erstens sind verdammt viele Dinge &quot;transient&quot; - ob ein File da ist oder nicht kann sich jederzeit ändern. Dann gibt es Dinge wo ein Vorabcheck einfach unnötig Rechenzeit verbrät. Und dann gibt es Fälle wo ein Vorabcheck kompliziert ist, oder Wissen über bestimmte Implementierungsdetails voraussetzt.</p>
<p>Also statt</p>
<pre><code class="language-cpp">if (can_i_do_it())
   do_it();
else
   scheissendreck();
</code></pre>
<p>lieber</p>
<pre><code class="language-cpp">if (!try_do_it())
   scheissendreck();
</code></pre>
<p>Und wie gesagt: wenn beides Sinn macht (&quot;do_it&quot; und &quot;try_do_it&quot;), auch beides anbieten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238560</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 04 Aug 2012 19:34:29 GMT</pubDate></item><item><title><![CDATA[Reply to Wann Exceptions on Sat, 04 Aug 2012 08:29:18 GMT]]></title><description><![CDATA[<p>Und hier ist noch der Forum Artikel von Shade zum Thema Exceptions:<br />
<a href="http://www.c-plusplus.net/forum/219864" rel="nofollow">http://www.c-plusplus.net/forum/219864</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238581</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sat, 04 Aug 2012 08:29:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wann Exceptions on Sat, 04 Aug 2012 19:29:09 GMT]]></title><description><![CDATA[<p>Danke für die Antworten <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/2238764</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238764</guid><dc:creator><![CDATA[Wurstinator]]></dc:creator><pubDate>Sat, 04 Aug 2012 19:29:09 GMT</pubDate></item></channel></rss>