<?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 fangen und nachricht weiterleiten]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hab ien kleines problem. Für meine Exceptions benutze ich std::runtime_error wenn was schief läuft. Ich benutze ticpp (tinyxml), die schmeißt ticpp::Exeption<br />
Ich möchte in etwa das hier realisieren:</p>
<pre><code class="language-cpp">try
{
	m_CmnDataDir = &quot;CmnData/&quot;;

        // Folgende können ticpp::Exdpetion schmeißen, damit kann ich hier aber nichts anfangen
        // Ich möchte sie weiterleiten an die zentrale Exceptionverwaltung wo die Meldung ausgegeben wird.
	LoadXmlSetting(&quot;AmphIdent.xml&quot;);
	LoadXmlSetting(&quot;KM.xml&quot;);
	std::string t = GetOptionString(&quot;KM.xml&quot;, &quot;set1/set1-1/val1-1-1&quot;);
}
catch (ticpp::Exception&amp; e)
{
        // throw in catch geht ja nciht ...
	throw std::runtime_error(e.m_details.c_str());
}
</code></pre>
<p>Wie kann man das am elegantesten lösen? Ich möchte nicht in der zentralen Behandlungsroutine einen extra catch-block einrichtign für ticpp, weil ich das ja nur in einem ganz bestimmten Bereich benutze.<br />
Ich muss also quasi die NAchricht, die ticpp::Exeption enthält in std::runtime_error umwandeln</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179398/exception-fangen-und-nachricht-weiterleiten</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 06:06:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179398.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 21 Apr 2007 10:03:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exception fangen und nachricht weiterleiten on Sat, 21 Apr 2007 10:03:25 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich hab ien kleines problem. Für meine Exceptions benutze ich std::runtime_error wenn was schief läuft. Ich benutze ticpp (tinyxml), die schmeißt ticpp::Exeption<br />
Ich möchte in etwa das hier realisieren:</p>
<pre><code class="language-cpp">try
{
	m_CmnDataDir = &quot;CmnData/&quot;;

        // Folgende können ticpp::Exdpetion schmeißen, damit kann ich hier aber nichts anfangen
        // Ich möchte sie weiterleiten an die zentrale Exceptionverwaltung wo die Meldung ausgegeben wird.
	LoadXmlSetting(&quot;AmphIdent.xml&quot;);
	LoadXmlSetting(&quot;KM.xml&quot;);
	std::string t = GetOptionString(&quot;KM.xml&quot;, &quot;set1/set1-1/val1-1-1&quot;);
}
catch (ticpp::Exception&amp; e)
{
        // throw in catch geht ja nciht ...
	throw std::runtime_error(e.m_details.c_str());
}
</code></pre>
<p>Wie kann man das am elegantesten lösen? Ich möchte nicht in der zentralen Behandlungsroutine einen extra catch-block einrichtign für ticpp, weil ich das ja nur in einem ganz bestimmten Bereich benutze.<br />
Ich muss also quasi die NAchricht, die ticpp::Exeption enthält in std::runtime_error umwandeln</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270449</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 21 Apr 2007 10:03:25 GMT</pubDate></item><item><title><![CDATA[Reply to Exception fangen und nachricht weiterleiten on Sat, 21 Apr 2007 10:39:45 GMT]]></title><description><![CDATA[<p>wenn du mit verschachtelten try blöcken leben kannst einfach so:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdexcept&gt;
#include &lt;string&gt;

int main()
{
    try
    {
        try
        {
             throw std::string(&quot;ticpp exception&quot;);
        }
        catch(std::string&amp; s)
        {
             throw(std::runtime_error(s));
        }
    }
    catch(std::runtime_error&amp; re)
    {
        std::cout&lt;&lt;re.what()&lt;&lt;std::endl;
    } 
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1270477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270477</guid><dc:creator><![CDATA[wolfi wendel]]></dc:creator><pubDate>Sat, 21 Apr 2007 10:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to Exception fangen und nachricht weiterleiten on Sat, 21 Apr 2007 10:45:18 GMT]]></title><description><![CDATA[<p>ne das geht ja nciht. In einem catchblock darf doch meines wissens nicht was neues geworfen werden, oder?<br />
ALso mein prog schmeirt dabei jedenfalls immer ab. das einzige was geht ist throw; da wird es einfach weitergeworfen.</p>
<p>Viel schlimmer wird es ja ncoh hierbei:<br />
Ich habe ein plugin, welches einen datenbankzugriff abstrahiert. Verschiedene plugins benutzen verschiedene libs und alle schmeißen verschiedene Exceptions. Wie mach ich das nu runter, dass die NAchricht als std::runtime_error oder was abgeleitetes ankommt?</p>
<p>Das ginge, ist aber extrem hässlich...</p>
<pre><code class="language-cpp">bool fehler = false;
string msg;
try
{
//...
}
catch(ticpp::Exception&amp; e)
{
  msg = e.m_details;
  fehler = true;
}
if(fehler)
  throw std::rumtime_error(msg);
</code></pre>
<p>Aber so will ichs echt nich machen, das is ja total hässlich und zerschießt meinen ganzen schönen code</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270484</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 21 Apr 2007 10:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to Exception fangen und nachricht weiterleiten on Sat, 21 Apr 2007 11:11:40 GMT]]></title><description><![CDATA[<p>Klar darfst du etwas neues weiterwerfen, wer soll dich denn daran hindern? (vielleicht wäre es gut dazuzusagen, WIE und WO dein Programm &quot;abschmiert&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270506</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 21 Apr 2007 11:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Exception fangen und nachricht weiterleiten on Sat, 21 Apr 2007 11:12:47 GMT]]></title><description><![CDATA[<p>Maxi schrieb:</p>
<blockquote>
<p>ne das geht ja nciht. In einem catchblock darf doch meines wissens nicht was neues geworfen werden, oder?<br />
ALso mein prog schmeirt dabei jedenfalls immer ab. das einzige was geht ist throw; da wird es einfach weitergeworfen.</p>
</blockquote>
<p>wenn da ein throw stehn darf warum dann nicht auch throw std::runtime_error? also bei mir klappts wunderbar! kannst ja der übersichtlichkeit halber den inneren try-block in eine funktion auslagern, die dann auch alle dateien läd. beim throw-spezifizierer nur std::runtime_error angeben und die funktion dann nur noch im try block von main() aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270507</guid><dc:creator><![CDATA[wolfi wendel]]></dc:creator><pubDate>Sat, 21 Apr 2007 11:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to Exception fangen und nachricht weiterleiten on Sat, 21 Apr 2007 11:23:54 GMT]]></title><description><![CDATA[<p>hm...<br />
Also es kommt mir komisch vor, im catch-blcok einer exception eine andere zu werfen. Das Weiterleiten is ja da was anderes würd ich sagen.</p>
<p>Also Abschmieren is vl komisch gesagt. Im VC sagt er mir dann wenn ich zu throw std::runtime_error im catch-block komme, und weiter gehen will, das zu der stelle kein source code gefunden werden kann. mit F5 beendet er sich dann normal irgendwie. Hm.. also bis jetzt scheints ja doch zu funktionieren.</p>
<p>Aber ich war mir doch so sicher, dass man im catch block nichts neues schmeißen darf. Aber das ist wirklich nicht so?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270514</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 21 Apr 2007 11:23:54 GMT</pubDate></item><item><title><![CDATA[Reply to Exception fangen und nachricht weiterleiten on Sat, 21 Apr 2007 11:57:30 GMT]]></title><description><![CDATA[<p>Mag ja sein das es nach deinem pers. Empfinden komisch ist, in einem catch-Block eine neue Exception zu werfen. Aber wen interessiert das? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Solange es allgemein legal und als sauberes Design angesehen wird, spricht nichts dagegen. Außer vielleicht dein pers. Empfinden. Aber dann solltest du uns hier auch nicht nach unserer Meinung fragen, wenn du es eh angeblich besser weißt. Oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1270539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270539</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sat, 21 Apr 2007 11:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to Exception fangen und nachricht weiterleiten on Sat, 21 Apr 2007 12:03:51 GMT]]></title><description><![CDATA[<p>ja, ich hab das eben auch garnich richtig probiert obs geht, weils eben nicht geht (dachte ich)...<br />
Naja, nun weiß ich es besser. Ich hab ja auch nur gesagt, dass esmir komishc vorkommt, aber daran gewöhn ich mich, jetzt wo ich weiß, dass es so klappt <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1270542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1270542</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Sat, 21 Apr 2007 12:03:51 GMT</pubDate></item></channel></rss>