<?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[std::runtime_error wird nicht gefangen]]></title><description><![CDATA[<p>Moin,</p>
<p>ich steht gerade echt auf dem Schlauch: Eine Funktion zum lesen einer Datei wirft einen std::runtime_error, wenn die Datei nicht vorhanden ist. Das Problem ist, obwohl ich der Meinung bin, diesen zu fangen, aborted mein Programm mit der Meldung &quot;terminate called after throwing an instance of 'std::runtime_error'&quot;</p>
<p>Was mach ich hier falsch:</p>
<pre><code class="language-cpp">std::string loadFile(const std::string&amp; file_name) throw (std::runtime_error)
{
    if(datei existiert nicht)
    {
        throw std::runtime_error(file_name);
    }
    lese_den_kram_ein();
}

...
Foo::Foo()
{
    std::string config;
    try {
        config = loadFile(&quot;pfad/zu/nichtexistenter.datei&quot;);
    } catch (std::runtime_error&amp; ex) {
        Log &lt;&lt; ex.what() &lt;&lt; &quot; wurde nicht gefunden&quot;;
        lade_eine_default_config();
        return;
    }
    lade_die_richtig_config(config);
}
</code></pre>
<p>Wie gesagt, wenn der runtime_error fliegt, wird er nicht gefangen? Wieso? Hat das was damit zu tun, dass der Error im Konstruktor fliegt und gefangen wird (werden sollte)? Aber es ist ja der Konstruktorbody, keine Elementinitialisierung, also sollte das ja ganz normal funktionieren.</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278234/std-runtime_error-wird-nicht-gefangen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 08:31:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278234.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Dec 2010 13:03:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 13:03:00 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich steht gerade echt auf dem Schlauch: Eine Funktion zum lesen einer Datei wirft einen std::runtime_error, wenn die Datei nicht vorhanden ist. Das Problem ist, obwohl ich der Meinung bin, diesen zu fangen, aborted mein Programm mit der Meldung &quot;terminate called after throwing an instance of 'std::runtime_error'&quot;</p>
<p>Was mach ich hier falsch:</p>
<pre><code class="language-cpp">std::string loadFile(const std::string&amp; file_name) throw (std::runtime_error)
{
    if(datei existiert nicht)
    {
        throw std::runtime_error(file_name);
    }
    lese_den_kram_ein();
}

...
Foo::Foo()
{
    std::string config;
    try {
        config = loadFile(&quot;pfad/zu/nichtexistenter.datei&quot;);
    } catch (std::runtime_error&amp; ex) {
        Log &lt;&lt; ex.what() &lt;&lt; &quot; wurde nicht gefunden&quot;;
        lade_eine_default_config();
        return;
    }
    lade_die_richtig_config(config);
}
</code></pre>
<p>Wie gesagt, wenn der runtime_error fliegt, wird er nicht gefangen? Wieso? Hat das was damit zu tun, dass der Error im Konstruktor fliegt und gefangen wird (werden sollte)? Aber es ist ja der Konstruktorbody, keine Elementinitialisierung, also sollte das ja ganz normal funktionieren.</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989007</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 02 Dec 2010 13:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 13:15:56 GMT]]></title><description><![CDATA[<p>Mit folgendem Beispiel konnte ich den von dir geschilderten Fehler nicht nachvollziehen (Compiler TDM G++ 4.5.0):</p>
<pre><code class="language-cpp">#include &lt;stdexcept&gt;
#include &lt;iostream&gt;

class Foo
{
  public:
  Foo();

  private:
  int i;
};

void WerfeException() throw (std::runtime_error)
{
  throw std::runtime_error(&quot;abc&quot;);
}

Foo::Foo() : i(4)
{
  try
  {
    WerfeException();
  }
  catch (std::runtime_error&amp; e)
  {
    std::cout &lt;&lt; &quot;Exception gefangen &quot; &lt;&lt; e.what() &lt;&lt; std::endl;
  }
}

int main()
{
  Foo f;
}
</code></pre>
<p>Der Fehler scheint also woanders zu liegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989012</guid><dc:creator><![CDATA[player424]]></dc:creator><pubDate>Thu, 02 Dec 2010 13:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 13:24:49 GMT]]></title><description><![CDATA[<p>Hmm, das scheint mit dem Rückgabetyp der Funktion zusammenzuhängen.<br />
ist die Funktion void (wie in deinem Beipsiel) wird die exception tatsächlich gefangen. Ist sie hingegen std::string, wird terminate() aufgerufen...</p>
<p>Zwei exceptions zur gleichen Zeit aktiv? Destruktor von std::string ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989022</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 02 Dec 2010 13:24:49 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 13:32:29 GMT]]></title><description><![CDATA[<p>Ich kann keinen Zusammenhang mit dem Rückgabewert erkennen. Die Möglichkeit, dass eine andere Exception fliegt kannst du aber prüfen indem du einfach mal alle anderen noch zusätzlich fängst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989029</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Thu, 02 Dec 2010 13:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 13:38:44 GMT]]></title><description><![CDATA[<p>Auch wenn ich catch(...) mache, kommt ein abort(). WTF? Irgendwas übersehe ich gerade. Kann es sein das std::ifstream::is_open() selbst eine Exception wirft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989035</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 02 Dec 2010 13:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 13:39:17 GMT]]></title><description><![CDATA[<p>Zeig doch mal ein vollständiges Minimalbeispiel, das das Problem reproduziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989036</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Thu, 02 Dec 2010 13:39:17 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 13:46:05 GMT]]></title><description><![CDATA[<p>PhilippM schrieb:</p>
<blockquote>
<p>Kann es sein das std::ifstream::is_open() selbst eine Exception wirft?</p>
</blockquote>
<p>Laut Referenz nicht. Ich hab aber eben auch mal dein Beispiel getestet und das funktioniert wie von dir erwartet.</p>
<p><a href="http://www.cplusplus.com/reference/iostream/ifstream/is_open/" rel="nofollow">http://www.cplusplus.com/reference/iostream/ifstream/is_open/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989041</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Thu, 02 Dec 2010 13:46:05 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 13:53:50 GMT]]></title><description><![CDATA[<p>Das funktioniert wie erwartet</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;stdexcept&gt;
#include &lt;iostream&gt;

std::string loadFile(const std::string&amp; file_name) throw(std::runtime_error)
{
    std::string buf, line;
    std::ifstream in(file_name.c_str(), std::ios_base::in);
    if(!in.is_open())
    {
        throw std::runtime_error(file_name);
    }
    while(std::getline(in,line))
        buf += line;
    return buf;
}

class Foo {
public:
    Foo(const std::string&amp; filename)
    {
        std::string bar;
        try {
            bar = loadFile(filename);
        } catch(std::runtime_error&amp; ex) {
            std::cerr &lt;&lt; ex.what() &lt;&lt; &quot; konnte nicht geöffnet werden&quot;;
            mem = 0;
            return;
        }
        mem = 1;
    }
private:
    int mem;
};

class Other {
public:
    Other():member(&quot;blub&quot;){}
private:
    Foo member;
};

int main(int argc, char *argv[])
{
    Other o;
    0;
}
</code></pre>
<p>Problem ist, wenn ich genau diesen Code</p>
<pre><code class="language-cpp">try {
            bar = loadFile(filename);
        } catch(std::runtime_error&amp; ex) {
            std::cerr &lt;&lt; ex.what() &lt;&lt; &quot; konnte nicht geöffnet werden&quot;;
            mem = 0;
            return;
        }
</code></pre>
<p>in meine Software paste, kommts zum abort().</p>
<p>Das kann ja eigentlich nur heißen, das zwei Excpetions fliegen, von denen ich nur eine gefangen kriege. Wenn ich catch(...) mache, ist das Ergebnis aber das gleiche.</p>
<p>Irgendwie steh ich gerade voll auf dem Schlauch.</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989045</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 02 Dec 2010 13:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:00:05 GMT]]></title><description><![CDATA[<p>Mal eine andere Frage, bist du dir sicher, dass <code>is_open()</code> an der Stelle die richtige Methode ist? Das eine zweite Exception fliegt ist unwahrscheinlich, wenn du sie nicht fangen kannst. Vielleicht darfst du <code>is_open()</code> nur auf eine vorhandene Datei anwenden?</p>
<p><a href="http://www.cplusplus.com/reference/iostream/ifstream/ifstream/" rel="nofollow">http://www.cplusplus.com/reference/iostream/ifstream/ifstream/</a><br />
Dritter Absatz der Beschreibung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989046</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:00:05 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 13:59:51 GMT]]></title><description><![CDATA[<p>Exception-Spezifikationen sind deprecated, weg damit! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989047</guid><dc:creator><![CDATA[tja]]></dc:creator><pubDate>Thu, 02 Dec 2010 13:59:51 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:01:04 GMT]]></title><description><![CDATA[<p>Okay, diese zwei Funktionen gibts:</p>
<pre><code class="language-cpp">std::string loadFile(const std::string&amp; file_name) throw(std::runtime_error)
{
    std::string buf;
    std::string line;
    std::ifstream in(file_name.c_str(), std::ios_base::in);
    if(!in.is_open())
    {
        throw std::runtime_error(file_name);
    }
    while(std::getline(in,line))
        buf += line;
    return buf;
}

void foo() throw (std::runtime_error)
{
    throw std::runtime_error(&quot;foo&quot;);
}
</code></pre>
<p>Folgendes passiert:</p>
<pre><code class="language-cpp">try {
        //config = loadFile(config_file_name);  // abort -&gt; in der abort-Meldung steht der korrekte File-name
        foo();  // Exception wird korrekt gefangen
    } catch (std::runtime_error&amp; ex){
        Log() &lt;&lt; Log::Fail &lt;&lt; &quot;Could not open &quot; &lt;&lt; ex.what() &lt;&lt; &quot;. SCS does not work without this file.&quot; &lt;&lt; Log::endl;
        return;
    }
</code></pre>
<p>Das heißt, aus loadFile() muss mehr als eine Exception kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989049</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:01:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:01:31 GMT]]></title><description><![CDATA[<p>In der main hast du kein return drin<br />
In der ursprünglichen loadFile auch nicht...</p>
<p>Ich vermute mal, dass deine Exception gefangen wird, aber der<br />
Stream nicht geflusht wird.</p>
<pre><code class="language-cpp">std::cerr &lt;&lt; ex.what() &lt;&lt; &quot; konnte nicht geöffnet werden&quot; &lt;&lt; std::endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1989050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989050</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:01:31 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:04:37 GMT]]></title><description><![CDATA[<p>kuck mal, ob 'irgendetwas' gefangen wird...</p>
<pre><code class="language-cpp">} catch(...){

}
</code></pre>
<p>danach würde ich dann const std::exception&amp; versuchen zu fangen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989051</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:04:37 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:05:12 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>In der main hast du kein return drin</p>
</blockquote>
<p>Stimmt. Da funktioniert aber auch alles</p>
<blockquote>
<p>Ich vermute mal, dass deine Exception gefangen wird, aber der<br />
Stream nicht geflusht wird.</p>
</blockquote>
<p>Das logfile wird aber geflusht.<br />
Außerdem, selbst wenn der stream nicht geflusht würde, dürfte ja kein abort() kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989052</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989052</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:05:33 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>kuck mal, ob 'irgendetwas' gefangen wird...</p>
<pre><code class="language-cpp">} catch(...){

}
</code></pre>
<p>danach würde ich dann const std::exception&amp; versuchen zu fangen</p>
</blockquote>
<p>Habe ich gerade probiert. auch die ellipse catcht nix.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989053</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:05:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:05:33 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>Ich vermute mal, dass deine Exception gefangen wird, aber der<br />
Stream nicht geflusht wird.</p>
<pre><code class="language-cpp">std::cerr &lt;&lt; ex.what() &lt;&lt; &quot; konnte nicht geöffnet werden&quot; &lt;&lt; std::endl;
</code></pre>
</blockquote>
<p>Ein std::endl bewirkt ein std::flush und ein '\n'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989054</guid><dc:creator><![CDATA[tjatja]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:05:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:10:00 GMT]]></title><description><![CDATA[<p>tjatja schrieb:</p>
<blockquote>
<p>XSpille schrieb:</p>
<blockquote>
<p>Ich vermute mal, dass deine Exception gefangen wird, aber der<br />
Stream nicht geflusht wird.</p>
<pre><code class="language-cpp">std::cerr &lt;&lt; ex.what() &lt;&lt; &quot; konnte nicht geöffnet werden&quot; &lt;&lt; std::endl;
</code></pre>
</blockquote>
<p>Ein std::endl bewirkt ein std::flush und ein '\n'.</p>
</blockquote>
<p>Danke für die Info, allerdings ist mir das klar...<br />
Ein Zeilenumbruch nach einer Meldung kann auch nichts schaden <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1989057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989057</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:11:19 GMT]]></title><description><![CDATA[<p>Den Hinweis auf <code>fail()</code> zu checken hast du gesehen?</p>
<pre><code class="language-cpp">if (in.fail() || !in.is_open())
    throw bla;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1989060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989060</guid><dc:creator><![CDATA[Nick Unbekannt]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:24:59 GMT]]></title><description><![CDATA[<p>okay, habe den Fehler weiter eingegrenzt</p>
<pre><code class="language-cpp">std::string loadFile(const std::string&amp; file_name) throw(std::runtime_error)
{
    std::string buf, line;
    std::ifstream in(file_name.c_str(), std::ios_base::in);
    if(!in)
    {
        throw std::runtime_error(file_name);
    }
    return &quot;&quot;;   // das funktioniert

    while(std::getline(in,line))
        buf += line;
    return buf;
}
</code></pre>
<p>Man beachte, das die Funktion in jedem Fall einen leeren String zurückgibt.</p>
<p>Das Verhalten ist das erwartete: Für eine existente Datei gibt sie einen leeren String zurück, für eine nicht existente Datei kommt eine Exception, die auch gefangen wird.</p>
<p>Entferne ich das</p>
<pre><code class="language-cpp">return &quot;&quot;;
</code></pre>
<p>wird abort() aufgerufen im Falle einer nicht existenten Datei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989077</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:24:59 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:37:48 GMT]]></title><description><![CDATA[<p>EDIT: ups... Falsche Vermutung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989085</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:37:48 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:31:36 GMT]]></title><description><![CDATA[<p>So geht's:</p>
<pre><code class="language-cpp">std::string loadFile(const std::string&amp; file_name) throw(std::runtime_error)
{
    std::string buf, line;
    std::ifstream in(file_name.c_str(), std::ios_base::in);
    if(in.fail() || !in)
    {
        throw std::runtime_error(file_name);
        return &quot;&quot;;
    } else {
        while(std::getline(in,line))
            buf += line;
        return buf;
    }
}
</code></pre>
<p>Kann mir vielleicht einer erklären, wo hier das Problem war?<br />
Ich hab nämlich keinen Schimmer, warum es jetzt geht.</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989086</guid><dc:creator><![CDATA[PhilippM]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:31:36 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 14:46:23 GMT]]></title><description><![CDATA[<p>Was ist denn mit dem Forum los? Jeder schreibt hier &quot;mach mal catch(...)&quot; aber das kann doch nicht funktionieren wenn die Funktion spezifiziert hat, was sie werfen darf..</p>
<pre><code class="language-cpp">std::string loadFile(const std::string&amp; file_name) throw(std::runtime_error)
</code></pre>
<p>Da spezifizierst du, dass du nur runtime_error werfen darfst. Wenn eine andere Exception kommt, wird terminiert. Da bringt dir dein catch(...) auch nix mehr. Mach das mal weg und guck DANN mit catch(...) was eigentlich geworfen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989097</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Thu, 02 Dec 2010 14:46:23 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 15:03:12 GMT]]></title><description><![CDATA[<p>NewSoftzzz schrieb:</p>
<blockquote>
<p>Was ist denn mit dem Forum los? Jeder schreibt hier &quot;mach mal catch(...)&quot; aber das kann doch nicht funktionieren wenn die Funktion spezifiziert hat, was sie werfen darf..</p>
<pre><code class="language-cpp">std::string loadFile(const std::string&amp; file_name) throw(std::runtime_error)
</code></pre>
<p>Da spezifizierst du, dass du nur runtime_error werfen darfst. Wenn eine andere Exception kommt, wird terminiert. Da bringt dir dein catch(...) auch nix mehr. Mach das mal weg und guck DANN mit catch(...) was eigentlich geworfen wird.</p>
</blockquote>
<p>Bekenne mich schuldig.<br />
Ich verwende nie throw und war der Meinung, dass sonst eine std::bad_exception<br />
zurückkommt. Die ist allerdings (scheinbar) nur der Fall, wenn throw diese<br />
auch enthält.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989115</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 02 Dec 2010 15:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 15:47:54 GMT]]></title><description><![CDATA[<p>tja schrieb:</p>
<blockquote>
<p>Exception-Spezifikationen sind deprecated, weg damit! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>Der Beitrag ging verloren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989159</guid><dc:creator><![CDATA[andagain]]></dc:creator><pubDate>Thu, 02 Dec 2010 15:47:54 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 15:49:21 GMT]]></title><description><![CDATA[<p>tja schrieb:</p>
<blockquote>
<p>Exception-Spezifikationen sind deprecated, weg damit! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>Stimmt, er hat im Prinzip das gleiche gesagt wie ich. Aber wenn man wie ein Troll schreibt wird man halt nicht ernst genommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>mfg, René~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989160</guid><dc:creator><![CDATA[NewSoftzzz]]></dc:creator><pubDate>Thu, 02 Dec 2010 15:49:21 GMT</pubDate></item><item><title><![CDATA[Reply to std::runtime_error wird nicht gefangen on Thu, 02 Dec 2010 17:31:24 GMT]]></title><description><![CDATA[<p>NewSoftzzz schrieb:</p>
<blockquote>
<p>tja schrieb:</p>
<blockquote>
<p>Exception-Spezifikationen sind deprecated, weg damit! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
</blockquote>
<p>Stimmt, er hat im Prinzip das gleiche gesagt wie ich. Aber wenn man wie ein Troll schreibt wird man halt nicht ernst genommen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>mfg, René~</p>
</blockquote>
<p>Du meinst also, wenn man ein Clown-Smiley benutzt, dass man damit kennzeichnet ein Troll zu sein?<br />
Dann sollte Marcus++ das Smiley löschen!<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>XSpille schrieb:</p>
<blockquote>
<p>Danke für die Info, allerdings ist mir das klar...</p>
</blockquote>
<p>Ist klar...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1989218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1989218</guid><dc:creator><![CDATA[tja]]></dc:creator><pubDate>Thu, 02 Dec 2010 17:31:24 GMT</pubDate></item></channel></rss>