<?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[Threads und Ausnahmen]]></title><description><![CDATA[<p>Ich hab neben meinem Hauptthread noch ein Arbeiterthread welcher mit Hilfe von Streams kommuniziert. Das heißt der Hauptthread schickt die Eingabedaten per Stream zum Arbeiter und bekommt mit Hilfe eines andern die Ausgabe zurück.</p>
<p>Nun kann es aber passieren, dass im Arbeiter ein Fehler auftritt, also eine Exception fliegt. Nun kann sie ja nicht aus dem Thread rausfliegen und darum wollte ich die Exception zwischenlagern, bis der Hauptthread versucht auf die Ausgaedaten zuzugreifen und sie dann im Hauptthread weiterwerfen.</p>
<p>Das Problem ist aber, dass ich nicht weiß wie ich sie zwischenlagern soll.</p>
<pre><code class="language-cpp">struct ThreadData{
  std::exception*err;
};

void thread_main(ThreadData&amp;data){
  try{
    //...
  }catch(std::exception&amp;err){
    // data.err = err.clone(); geht nicht
    data.err = new std::runtime_error(err.what()); // naja, auch nicht das Wahre
  }catch(...){
    data.err = new std::runtime_error(&quot;unknown exception&quot;); // auch nicht optimal
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/153505/threads-und-ausnahmen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 08:23:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/153505.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Jul 2006 22:12:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads und Ausnahmen on Mon, 17 Jul 2006 22:12:01 GMT]]></title><description><![CDATA[<p>Ich hab neben meinem Hauptthread noch ein Arbeiterthread welcher mit Hilfe von Streams kommuniziert. Das heißt der Hauptthread schickt die Eingabedaten per Stream zum Arbeiter und bekommt mit Hilfe eines andern die Ausgabe zurück.</p>
<p>Nun kann es aber passieren, dass im Arbeiter ein Fehler auftritt, also eine Exception fliegt. Nun kann sie ja nicht aus dem Thread rausfliegen und darum wollte ich die Exception zwischenlagern, bis der Hauptthread versucht auf die Ausgaedaten zuzugreifen und sie dann im Hauptthread weiterwerfen.</p>
<p>Das Problem ist aber, dass ich nicht weiß wie ich sie zwischenlagern soll.</p>
<pre><code class="language-cpp">struct ThreadData{
  std::exception*err;
};

void thread_main(ThreadData&amp;data){
  try{
    //...
  }catch(std::exception&amp;err){
    // data.err = err.clone(); geht nicht
    data.err = new std::runtime_error(err.what()); // naja, auch nicht das Wahre
  }catch(...){
    data.err = new std::runtime_error(&quot;unknown exception&quot;); // auch nicht optimal
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1099473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1099473</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Mon, 17 Jul 2006 22:12:01 GMT</pubDate></item></channel></rss>