<?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[list::push_back und Exceptions]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe hier eine (alte) C++-Applikation, bei denen Exceptions deaktiviert sind (-fno-exception). Das geht nicht anders, da die Software konsequent den Rückgabewert von new auf NULL überprüft, nirgends Exceptions nutzt und für ein schnelles Umschreiben einfach vieeeeel zu groß ist.</p>
<p>Spannende Frage jetzt aber: wenn ein Aufruf von std::list::push_back schief geht - wie bekomme ich das dann mit? Der Returnwert ist void und eine Exception gibt es nicht - wie kann ich dann den Erfolg des Aufrufes ermitteln?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302123/list-push_back-und-exceptions</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 14:06:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302123.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Apr 2012 17:47:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to list::push_back und Exceptions on Wed, 11 Apr 2012 17:47:53 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe hier eine (alte) C++-Applikation, bei denen Exceptions deaktiviert sind (-fno-exception). Das geht nicht anders, da die Software konsequent den Rückgabewert von new auf NULL überprüft, nirgends Exceptions nutzt und für ein schnelles Umschreiben einfach vieeeeel zu groß ist.</p>
<p>Spannende Frage jetzt aber: wenn ein Aufruf von std::list::push_back schief geht - wie bekomme ich das dann mit? Der Returnwert ist void und eine Exception gibt es nicht - wie kann ich dann den Erfolg des Aufrufes ermitteln?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200894</guid><dc:creator><![CDATA[Wohooo]]></dc:creator><pubDate>Wed, 11 Apr 2012 17:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to list::push_back und Exceptions on Wed, 11 Apr 2012 18:11:40 GMT]]></title><description><![CDATA[<p>Ist nicht vorgesehen. Generell ist bei Verwendung der C++-Standardbibliothek etwas wie gccs -fno-exceptions eine sehr schlechte Idee - du müsstest eigene Allokatoren schreiben, und Dinge wie vector::at sind überhaupt nicht mehr drin.</p>
<p>Es sollte mich aber sehr wundern, wenn du diesen Compilerswitch wirklich benötigtest - dass der Compiler Unwinding-Code erzeugt, zwingt dich ja nicht dazu, irgendwo Exceptions zu verwenden. Schlimmstenfalls liegt da halt unbenutzter Code in der Binary.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200899</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 11 Apr 2012 18:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to list::push_back und Exceptions on Wed, 11 Apr 2012 18:27:27 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Es sollte mich aber sehr wundern, wenn du diesen Compilerswitch wirklich benötigtest - dass der Compiler Unwinding-Code erzeugt, zwingt dich ja nicht dazu, irgendwo Exceptions zu verwenden. Schlimmstenfalls liegt da halt unbenutzter Code in der Binary.</p>
</blockquote>
<p>Naja - was passiert mit nicht abgefangenen Exceptions? Richtig, das Programm macht einen abflug. Und das, obwohl für Fehlerfälle wie einem felhgeschlagenen &quot;new&quot; eigentlich eine ordnungsgemäße Behandlung vorhanden ist. Mit anderen Worten: das Programm verhält sich günstigstenfalls anders, ist im ungünstigeren Fall aber unbenutzbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200909</guid><dc:creator><![CDATA[Wohooo]]></dc:creator><pubDate>Wed, 11 Apr 2012 18:27:27 GMT</pubDate></item><item><title><![CDATA[Reply to list::push_back und Exceptions on Wed, 11 Apr 2012 18:31:38 GMT]]></title><description><![CDATA[<p>Musste halt prüfen, ob sich die size des vectors geändert hat</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200911</guid><dc:creator><![CDATA[Eis off]]></dc:creator><pubDate>Wed, 11 Apr 2012 18:31:38 GMT</pubDate></item><item><title><![CDATA[Reply to list::push_back und Exceptions on Wed, 11 Apr 2012 18:54:11 GMT]]></title><description><![CDATA[<p>wenn nur das new das Problem ist, könntest du es durch die nothrow Variante ersetzen:</p>
<pre><code class="language-cpp">#include &lt;new&gt;

int main()
{
        int* a = new(std::nothrow) int;
}
</code></pre>
<p>Die liefert im Fehlerfall 0.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200916</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 11 Apr 2012 18:54:11 GMT</pubDate></item></channel></rss>