<?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[Exceptions]]></title><description><![CDATA[<p>Tach leute</p>
<p>Ich lese in meinem Buch gerade das hier:</p>
<blockquote>
<p><em><strong>&quot;Wenn aus einem Block herausgesprungen wird, werden die Destruktoren aller in diesem Block definierten automatischen Objekte aufgerufen! Diese Objekte werden dabei vom Laufzeit-Stack entfernt&quot;</strong></em></p>
</blockquote>
<p>Angenommen ich hätte eine Klasse:</p>
<pre><code class="language-cpp">class XYZ
{
public:
   ~Destructor() 
   DoSomething() throw(Exception) ;
};
</code></pre>
<p>Und wenn in DoSomething eine Exception ausgeworfen wird, wird der Destructor von dieser Klasse aufgerufen?</p>
<p>Dann habe ich noch gelesen, dass 'throw' deprecated wäre. Was soll man stattdessen benutzen?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264194/exceptions</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 04:59:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264194.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 Apr 2010 21:28:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exceptions on Sat, 03 Apr 2010 21:28:07 GMT]]></title><description><![CDATA[<p>Tach leute</p>
<p>Ich lese in meinem Buch gerade das hier:</p>
<blockquote>
<p><em><strong>&quot;Wenn aus einem Block herausgesprungen wird, werden die Destruktoren aller in diesem Block definierten automatischen Objekte aufgerufen! Diese Objekte werden dabei vom Laufzeit-Stack entfernt&quot;</strong></em></p>
</blockquote>
<p>Angenommen ich hätte eine Klasse:</p>
<pre><code class="language-cpp">class XYZ
{
public:
   ~Destructor() 
   DoSomething() throw(Exception) ;
};
</code></pre>
<p>Und wenn in DoSomething eine Exception ausgeworfen wird, wird der Destructor von dieser Klasse aufgerufen?</p>
<p>Dann habe ich noch gelesen, dass 'throw' deprecated wäre. Was soll man stattdessen benutzen?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877323</guid><dc:creator><![CDATA[Ludwig83]]></dc:creator><pubDate>Sat, 03 Apr 2010 21:28:07 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions on Sat, 03 Apr 2010 21:51:39 GMT]]></title><description><![CDATA[<p>Ludwig83 schrieb:</p>
<blockquote>
<p>Und wenn in DoSomething eine Exception ausgeworfen wird, wird der Destructor von dieser Klasse aufgerufen?</p>
</blockquote>
<p>Nein, der Satz aus deinem Buch sagt was anderes. Es werden nur die Objekte zerstört, die in dem lokalen Block des <code>throw</code> -Statements und in den umliegenden Blöcken/Funktionen liegen, bis die Exception gefangen wird.</p>
<pre><code class="language-cpp">void Function()
{
    XYZ xyz;
    {
        XYZ abc;
        xyz.DoSomething(); // wirft Exception
    } // hier wird abc, aber nicht xyz zerstört
} // hier wird xyz zerstört
</code></pre>
<p>Ludwig83 schrieb:</p>
<blockquote>
<p>Dann habe ich noch gelesen, dass 'throw' deprecated wäre. Was soll man stattdessen benutzen?</p>
</blockquote>
<p><code>throw</code> ist nicht deprecated. Was in C++0x, dem neuen Standard, deprecated sein wird, sind Exception-Spezifikationen. Stattdessen sollst du gar nichts oder evtl. später <code>noexcept</code> verwenden. Siehe auch <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-1861538.html" rel="nofollow">hier</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1877327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1877327</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 03 Apr 2010 21:51:39 GMT</pubDate></item></channel></rss>