<?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]]></title><description><![CDATA[<p>Hi ich hab mal ne simple grundlegende Frage zu exceptions.</p>
<pre><code class="language-cpp">try{
.....throw(...);
}
catch(...){
...}
</code></pre>
<p>So stehts in jedem Buch das ich gelsen hab und in jedem Tutorial.<br />
Nun die Frage. Das catch kommt immer direkt hinter dem try block. Ist das so ueblich? Ich fänd es viel logischer wenn man einer Sammelstelle hätte und dort alles einfängt. Jedoch sind die Beispiele in sämtlichen tutorials und Buechern so kurz, dass ich nicht rausfinden konnte ob man immer das catch dahinter packt oder nur an ein oder 2 Stellen im Kot catch verwendet. Denn wenn man catch immer dahinter packt kann man meiner Meinung es auch ganz sein lassen und den Fehler irgendwie per std::cout ausgeben.</p>
<p>MFG<br />
chew</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162793/exception</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 16:42:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162793.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Oct 2006 12:38:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exception on Mon, 23 Oct 2006 12:38:04 GMT]]></title><description><![CDATA[<p>Hi ich hab mal ne simple grundlegende Frage zu exceptions.</p>
<pre><code class="language-cpp">try{
.....throw(...);
}
catch(...){
...}
</code></pre>
<p>So stehts in jedem Buch das ich gelsen hab und in jedem Tutorial.<br />
Nun die Frage. Das catch kommt immer direkt hinter dem try block. Ist das so ueblich? Ich fänd es viel logischer wenn man einer Sammelstelle hätte und dort alles einfängt. Jedoch sind die Beispiele in sämtlichen tutorials und Buechern so kurz, dass ich nicht rausfinden konnte ob man immer das catch dahinter packt oder nur an ein oder 2 Stellen im Kot catch verwendet. Denn wenn man catch immer dahinter packt kann man meiner Meinung es auch ganz sein lassen und den Fehler irgendwie per std::cout ausgeben.</p>
<p>MFG<br />
chew</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159511</guid><dc:creator><![CDATA[chewbo]]></dc:creator><pubDate>Mon, 23 Oct 2006 12:38:04 GMT</pubDate></item><item><title><![CDATA[Reply to Exception on Mon, 23 Oct 2006 12:56:48 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mit &quot;try&quot; gibst Du halt an, dass Du diesen Block &quot;auf exceptions überwachen willst&quot;. Eigentlich wird anders ein Schuh draus: Wo immer Du ein &quot;catch&quot; schreiben willst, mußt Du diesem sagen, ab wo es &quot;auf exceptions lauschen&quot; soll.<br />
Vielleicht ist Dein Mißverständnis, dass man nur dort &quot;throw-en&quot; könnte, wo man in der vorherigen Zeile (oder in derselben Funktion, selbem Modul, ...) ein &quot;try&quot; hat. Dem ist nicht so.<br />
throw kannst Du überall machen ... catch aber nur nach einem vorhergehenden try.</p>
<p>&quot;Sammelstelle&quot; ist damit ganz einfach implementiert:</p>
<pre><code class="language-cpp">void alleMeineAusnahmen(myException const &amp; e) {
    // ... mach was mit meiner exception
}

int main(void) {
    try {
        // arbeite; rufe Funktionen auf, die Funktionen aufrufen, die ... 
        // die exeptions werfen könnten; trys/catches braucht's dazwischen nicht.
    }
    catch(myException&amp; e) {
        alleMeineAusnahmen(e);
    }
    catch(...) { // &quot;...&quot; ist hier sytaktisch w/richtig
        std::cout &lt;&lt; &quot;irgend eine andere exception gefangen
        throw;
    }
    return 0;
}
</code></pre>
<p>In meinem Beispiel gehe ich davon aus, dass Du eine eigene exception-Klasse (&quot;myException&quot;) definierst (ruhig von std::exception abgeleitet), die Du entweder direkt instantiierst oder von der Du wiederum speziellere exceptions ableitest. Geht natürlich auch mit std::exception, aber da dessen Interface sehr schmal ist, bietet die sich nicht unbedingt zur &quot;Sammelbehandlung&quot; an (außer &quot;Textausgeben&quot; kann die nicht viel - unr dafür braucht's keinen &quot;Sammler&quot;).</p>
<p>Ich hoffe, es war verständlich.</p>
<p>Gruß,</p>
<p>Simon2,</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159524</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 23 Oct 2006 12:56:48 GMT</pubDate></item><item><title><![CDATA[Reply to Exception on Mon, 23 Oct 2006 13:12:06 GMT]]></title><description><![CDATA[<p>chewbo! Das throw im try ist als Beispiel unglücklich. Da wo throw ist, muß ich noch kein try machen. Kann ich aber. Ich kann das try auch viel später einbauen.</p>
<pre><code class="language-cpp">void foo1()
{
   throw std::exception(&quot;was in foo1 falsch gelaufen.&quot;);
}

void foo2()
{
  std::cout &lt;&lt; &quot;foo2 anfang \n&quot;;
  foo1();
  std::cout &lt;&lt; &quot;foo2 zuende \n&quot;;
}

void foo3()
{
  std::cout &lt;&lt; &quot;foo3 anfang \n&quot;;
  try {
     foo2();
  } catch(std::exception &amp;e) {
    std::cout &lt;&lt; e.what() &lt;&lt; std::endl;
  }
  std::cout &lt;&lt; &quot;foo3 zuende \n&quot;;
}
</code></pre>
<p>Der Clou an der Sache ist, das ich try ganz woanders eingebaut habe, obwohl throw in foo1 geworfen wird. D.h. ich kann viel später auf eine Exception reagieren. Ich muß das nicht in foo1 machen (was deinem Beispiel entsprechen würde) und auch nicht in foo2. Ich kanns auch in foo3 machen, wenn es mir reicht, das ich es erst dort abfange.</p>
<p>In meinem Bsp. würde z.B. das auf dem Biildschirm ausgegeben werden:</p>
<pre><code>foo3 anfang
foo2 anfang
was in foo1 falsch gelaufen.
foo3 zuende
</code></pre>
<p>&quot;foo2 zuende&quot; würde nicht ausgegen werden, weil in foo1 der Fehler passierte, und ich habe in foo3 erst darauf reagiert. Cool, oder? <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>Ansonst schau dir das hier mal an:<br />
<a href="http://www.kharchi.de/cppratgeber3.htm" rel="nofollow">http://www.kharchi.de/cppratgeber3.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159544</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Mon, 23 Oct 2006 13:12:06 GMT</pubDate></item></channel></rss>