<?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[Ausnahmenbehandlung in C++]]></title><description><![CDATA[<p>Hallo</p>
<p>Ist es tatsächlich so dass man in C++ die Ausnahmenbehandlung ausschließlich mit Exceptions machen muss? Wenn ich mit assert Arbeite, dann werden diese Assertions doch im Release Modus ungültig?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269856/ausnahmenbehandlung-in-c</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 03:22:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269856.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Jul 2010 07:58:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 07:58:32 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ist es tatsächlich so dass man in C++ die Ausnahmenbehandlung ausschließlich mit Exceptions machen muss? Wenn ich mit assert Arbeite, dann werden diese Assertions doch im Release Modus ungültig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920276</guid><dc:creator><![CDATA[ausnahmen]]></dc:creator><pubDate>Fri, 02 Jul 2010 07:58:32 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 08:14:00 GMT]]></title><description><![CDATA[<p>Mir geht es vor allen um so etwas:</p>
<pre><code class="language-cpp">myString.ToDouble(&amp;doubleval);
myString.ToLong(&amp;longval);
</code></pre>
<p>Wenn es nicht passt, soll er diese Werte überspringen und einfach weitermachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920284</guid><dc:creator><![CDATA[ausnahmen]]></dc:creator><pubDate>Fri, 02 Jul 2010 08:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 08:17:18 GMT]]></title><description><![CDATA[<p>Mach doch sowas:</p>
<pre><code class="language-cpp">bool ok;
myString.ToDouble(&amp;doubleval, &amp;ok);
if (!ok) // fehlerbehandlung
</code></pre>
<p>So macht es Qt zB. (bzw die machen das mit Rückgabewert +ok-bool als optionaler Parameter).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920285</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 02 Jul 2010 08:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 08:18:29 GMT]]></title><description><![CDATA[<p>ausnahmen schrieb:</p>
<blockquote>
<p>Mir geht es vor allen um so etwas:</p>
<pre><code class="language-cpp">myString.ToDouble(&amp;doubleval);
myString.ToLong(&amp;longval);
</code></pre>
<p>Wenn es nicht passt, soll er diese Werte überspringen und einfach weitermachen.</p>
</blockquote>
<p>Was ist denn jetzt deine Frage? Wenn du die Funktionen implementierst, kannst du darin tun und lassen, was du willst. Wenn du sie nicht implementierst, musst du wohl mit dem Vorgefundenen leben.</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920286</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 02 Jul 2010 08:18:29 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 08:18:32 GMT]]></title><description><![CDATA[<p>Wie wäre es stattdessen mit einem if? Oder der C-Stil mit einem Rückgabewert und errno?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920287</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 02 Jul 2010 08:18:32 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 08:33:45 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Mach doch sowas:</p>
<pre><code class="language-cpp">bool ok;
myString.ToDouble(&amp;doubleval, &amp;ok);
if (!ok) // fehlerbehandlung
</code></pre>
<p>So macht es Qt zB. (bzw die machen das mit Rückgabewert +ok-bool als optionaler Parameter).</p>
</blockquote>
<p>So eine ähnliche Syntax hat wxWidgets, dann wird es wohl exakt dafür gedacht sein.</p>
<pre><code class="language-cpp">if(!myString.ToDouble(&amp;doubleval)
</code></pre>
<p>Dann ist es wohl so, dass man bei eigenen Funktionen auf Exceptions zurückgreifen muss um solche Fälle abzufangen? Irgendwo muss ja dieses True oder False ins if zurückgegeben werden oder nicht?</p>
<p>manni66 schrieb:</p>
<blockquote>
<p>Was ist denn jetzt deine Frage? Wenn du die Funktionen implementierst, kannst du darin tun und lassen, was du willst. Wenn du sie nicht implementierst, musst du wohl mit dem Vorgefundenen leben.<br />
Lars</p>
</blockquote>
<p>Ich weiß nicht wie man es in C++ handhabt und da ich nur ungern ein eigenes Süppchen koche wollte ich mal nachfragen was so üblich ist wenn mal statt einer double zahl ein sinnloser String eingegeben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920296</guid><dc:creator><![CDATA[ausnahmen]]></dc:creator><pubDate>Fri, 02 Jul 2010 08:33:45 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 08:34:39 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Wie wäre es stattdessen mit einem if? Oder der C-Stil mit einem Rückgabewert und errno?</p>
</blockquote>
<p>Gilt es dann noch als guter Stil?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920297</guid><dc:creator><![CDATA[ausnahmen]]></dc:creator><pubDate>Fri, 02 Jul 2010 08:34:39 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 08:39:26 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">bool myString::toDouble(double &amp;returnValue)
{
  if (...) //konvertierung erfolgreich
  { 
    returnValue = // konvertierter wert
    return true;
  }
  return false;
}
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">double myString::toDouble(bool *ok = 0)
{
  if (...) //konvertierung erfolgreich
  { 
    if (ok) *ok = true;
    return // konvertierter wert
  }
  if (ok) *ok = false;
  return 0.;
}
</code></pre>
<p>oder oder oder...</p>
<p>hauptsache verständlich, kommentiert und durchgängig bei allen entsprechenden Klassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920299</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 02 Jul 2010 08:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 08:44:38 GMT]]></title><description><![CDATA[<p>ausnahmen schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Wie wäre es stattdessen mit einem if? Oder der C-Stil mit einem Rückgabewert und errno?</p>
</blockquote>
<p>Gilt es dann noch als guter Stil?</p>
</blockquote>
<p>Es gilt vor allem als umständlich. Wenn es aber die Ausnahme ist und du dadurch nicht ein 10.000 Zeilenprogramm mit 9.000 Zeilen Fehlerbehandlung schreibst, ist das ok.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920304</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 02 Jul 2010 08:44:38 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 08:53:37 GMT]]></title><description><![CDATA[<p>ausnahmen schrieb:</p>
<blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Wie wäre es stattdessen mit einem if? Oder der C-Stil mit einem Rückgabewert und errno?</p>
</blockquote>
<p>Gilt es dann noch als guter Stil?</p>
</blockquote>
<p>Was ist guter Stil? Wenn es für das Problem mit den gegebenen Möglichkeiten angemessen ist, gewürzt mit ein wenig subjektiver Meinung <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>Wie wäre es übrigens mit einem Defaultparameter? Wäre vielleicht dies eher, was du möchtest?</p>
<pre><code class="language-cpp">double convert(std::string const&amp; str, double defaultValue)
{
  // try to convert str, in case of an error return defaultValue
}

// ...
doubleval = convert(myString, 0.0);
longval = convert(myString, 0L);
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920308</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 02 Jul 2010 08:53:37 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 09:18:16 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<pre><code class="language-cpp">double myString::toDouble(bool *ok = 0)
{
  if (...) //konvertierung erfolgreich
  { 
    if (ok) *ok = true;
    return // konvertierter wert
  }
  if (ok) *ok = false;
  return 0.;
}
</code></pre>
</blockquote>
<p>Wieso Zeiger? <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="🙂"
    /><br />
Wäre eine Referenz nicht schöner?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920317</guid><dc:creator><![CDATA[fasdfadsfsadfasdf]]></dc:creator><pubDate>Fri, 02 Jul 2010 09:18:16 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 09:25:30 GMT]]></title><description><![CDATA[<p>fasdfadsfsadfasdf schrieb:</p>
<blockquote>
<p>Fellhuhn schrieb:</p>
<blockquote>
<pre><code class="language-cpp">double myString::toDouble(bool *ok = 0)
{
  if (...) //konvertierung erfolgreich
  { 
    if (ok) *ok = true;
    return // konvertierter wert
  }
  if (ok) *ok = false;
  return 0.;
}
</code></pre>
</blockquote>
<p>Wieso Zeiger? <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="🙂"
    /><br />
Wäre eine Referenz nicht schöner?</p>
</blockquote>
<p>Im gegebenen Fall kann man aber den ok-Parameter weglassen, wenn man keinen Fehlerstatus benötigt. Bei Referenzen ginge das nicht ohne weiteres.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920320</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Fri, 02 Jul 2010 09:25:30 GMT</pubDate></item><item><title><![CDATA[Reply to Ausnahmenbehandlung in C++ on Fri, 02 Jul 2010 11:26:08 GMT]]></title><description><![CDATA[<p>ausnahmen schrieb:</p>
<blockquote>
<p>Ist es tatsächlich so dass man in C++ die Ausnahmenbehandlung ausschließlich mit Exceptions machen muss?</p>
</blockquote>
<p>Ja. Aber Du kannst Dir viele andere Weisen der Fehlerbehandlung ausdenken.</p>
<p>ausnahmen schrieb:</p>
<blockquote>
<p>Wenn ich mit assert Arbeite, dann werden diese Assertions doch im Release Modus ungültig?</p>
</blockquote>
<p>Nein. Im Allgemeinen bleiben die Assertions gültig, aber werden nicht mehr überprüft.</p>
<p>Aber irgendwie weiß ich nicht, was wegoptimiert werden soll.</p>
<pre><code class="language-cpp">bool ok=true;
double a1=eingabe1.toDouble(&amp;ok);
if(!ok) goto error;
double a2=eingabe2.toDouble(&amp;ok);
if(!ok) goto error;
double a3=eingabe3.toDouble(&amp;ok);
if(!ok) goto error;
double a4=eingabe4.toDouble(&amp;ok);
if(!ok) goto error;
double a5=eingabe5.toDouble(&amp;ok);
if(!ok) goto error;
rechne();
return;

error:
fehler();
</code></pre>
<pre><code class="language-cpp">try
{
double a1=eingabe1.toDouble();
double a2=eingabe2.toDouble();
double a3=eingabe3.toDouble();
double a4=eingabe4.toDouble();
double a5=eingabe5.toDouble();
rechne();
return;
}
catch(bool b)
{
fehler();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1920378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920378</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 02 Jul 2010 11:26:08 GMT</pubDate></item></channel></rss>