<?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[Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden]]></title><description><![CDATA[<p>Geht das irgendwie? Ich kriege dann immer nur Fehlermeldungen vom Compiler. Gibt es einen Weg auf diese Variable(n) zuzugreifen, außer, dass man sie außerhalb des try-Blocks definiert?</p>
<p>Angenommen ich würde meinen Code splitten, das heisst, ich würde einen Teil mit der Definition von diesen Variablen in einen try-Block setzen, und den Rest des Codes in den anderen try-Block. Könnte ich dann aus dem catch-Block des zweiten try-Blocks auf die Variablen zugreifen, die im ersten try-Block definiert wurden?</p>
<p>Viele Grüsse<br />
Ewgenij</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188057/zugriff-in-einem-catch-block-auf-variablen-die-innerhalb-von-dem-zugehörigen-try-block-definiert-wurden</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 02:03:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188057.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Jul 2007 16:48:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Thu, 26 Jul 2007 16:48:20 GMT]]></title><description><![CDATA[<p>Geht das irgendwie? Ich kriege dann immer nur Fehlermeldungen vom Compiler. Gibt es einen Weg auf diese Variable(n) zuzugreifen, außer, dass man sie außerhalb des try-Blocks definiert?</p>
<p>Angenommen ich würde meinen Code splitten, das heisst, ich würde einen Teil mit der Definition von diesen Variablen in einen try-Block setzen, und den Rest des Codes in den anderen try-Block. Könnte ich dann aus dem catch-Block des zweiten try-Blocks auf die Variablen zugreifen, die im ersten try-Block definiert wurden?</p>
<p>Viele Grüsse<br />
Ewgenij</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333224</guid><dc:creator><![CDATA[Ewgenijkkg]]></dc:creator><pubDate>Thu, 26 Jul 2007 16:48:20 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Thu, 26 Jul 2007 17:25:31 GMT]]></title><description><![CDATA[<p>was spricht dagegen, sie vor dem try block zu deklarieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333239</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Thu, 26 Jul 2007 17:25:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Fri, 27 Jul 2007 07:12:09 GMT]]></title><description><![CDATA[<p>Hallo, die Sache ist einfach die, dass der Wert dieser Variable ihr nur in diesem try-Block zugewiesen wird. Deswegen dachte ich, es wäre auch logischer, sie darin zu definieren. Aber wenn es nicht geht, dann kann ich sie natürlich auch außerhalb definieren.</p>
<p>Gruß<br />
Ewgenij</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333571</guid><dc:creator><![CDATA[Ewgenijkkg]]></dc:creator><pubDate>Fri, 27 Jul 2007 07:12:09 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Fri, 27 Jul 2007 07:20:38 GMT]]></title><description><![CDATA[<p>kannst ja mal gucken, was im exception objekt so drin ist. vielleicht auch ne referenz auf das objekt, das nen fehler verursacht hat. wenn du da selbst was strickst, kannst dir ja auch ne eigene fehlerklasse schreiben, da alles wichtige reinstopfen und schmeissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333577</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Fri, 27 Jul 2007 07:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Fri, 27 Jul 2007 11:59:33 GMT]]></title><description><![CDATA[<p>Hmm, aber wenn der compiler im catch-Block meckert, dass die Variable nicht definiert ist, dann heisst es doch, dass auch eine im try-Block initialisierte Referenz darauf nicht definiert sein wird. Oder? Ich meine, es ist doch wurscht, was ich im try-Block definiere: eine Variable oder einen Zeiger darauf, alles ist im catch-Block dann nicht sichtbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333947</guid><dc:creator><![CDATA[Ewgenijkkg]]></dc:creator><pubDate>Fri, 27 Jul 2007 11:59:33 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Fri, 27 Jul 2007 12:03:42 GMT]]></title><description><![CDATA[<p>Ewgenijkkg schrieb:</p>
<blockquote>
<p>Hmm, aber wenn der compiler im catch-Block meckert, dass die Variable nicht definiert ist, dann heisst es doch, dass auch eine im try-Block initialisierte Referenz darauf nicht definiert sein wird. Oder? Ich meine, es ist doch wurscht, was ich im try-Block definiere: eine Variable oder einen Zeiger darauf, alles ist im catch-Block dann nicht sichtbar.</p>
</blockquote>
<p>kopie erstellen?</p>
<p>das problem ist doch: catch ist etwas, dass komplett unabhaengig von dem code ist der die exception wirft. das ist der hintergedanke. man hat ein exception objekt wo alle wichtigen infos drinnen stehen. wenn man die fehlerbehandlung nun auf dem vorhanden sein von bestimmten variablen die (hoffentlich) gesetzt werden bevor die exception fliegt aufbaut, dann bindet man die fehlerbehandlung an den fehlererzeugenden code. genau das wollen exception aber vermeiden.</p>
<p>ein throw steht irgendwo und irgendwo komplett anders fange ich es dann. das exception objekt selber gibt mir alle nötigen infos über den kontext der exception.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333954</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 27 Jul 2007 12:03:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Fri, 27 Jul 2007 12:09:32 GMT]]></title><description><![CDATA[<p>Hast du vielleicht die Gültigkeitsbereiche von Variablen nicht 100%ig verstanden?</p>
<pre><code class="language-cpp">void foo()
{
  int a = 0;
  {
    int b = 0;
    // &lt;-- Hier ist a und b gültig
  }
  // &lt;-- Hier ist a gültig
}
</code></pre>
<p>Damit erklärt sich schon alles andere.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333961</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 27 Jul 2007 12:09:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Sun, 29 Jul 2007 09:42:10 GMT]]></title><description><![CDATA[<p>Du musst dir nur im Klaren sein, dass die Variable auch ungültig sein kann, bzw einen ungültigen Wert enthalten kann. Schließlich weißt du ja nicht, <em>wo genau</em> im try-Block die Exception geworfen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334222</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 29 Jul 2007 09:42:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Sun, 29 Jul 2007 11:36:51 GMT]]></title><description><![CDATA[<p>OK, danke, Leute, habs verstanden <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="🙂"
    /> Ich mache es einfach so, dass ich vor dem try-Block die Variable deklariere und noch eine zusätzliche boolische Variable. Die boolische Variable wird im try-Block zu true, wenn die erste Variable erfolgreich initialisiert wurde. Und in der Exception wird auf diese erste Variable nur dann zugegriffen, wenn die boolische Variable true ist. Das ist doch eine vernünftige Lösung, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334279</guid><dc:creator><![CDATA[Ewgenijkkg]]></dc:creator><pubDate>Sun, 29 Jul 2007 11:36:51 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Sun, 29 Jul 2007 12:17:09 GMT]]></title><description><![CDATA[<p>Das hört sich gut an! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334295</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 29 Jul 2007 12:17:09 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff in einem catch-Block auf Variablen, die innerhalb von dem zugehörigen try-Block definiert wurden on Sun, 29 Jul 2007 15:48:52 GMT]]></title><description><![CDATA[<p>Ewgenijkkg schrieb:</p>
<blockquote>
<p>OK, danke, Leute, habs verstanden <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="🙂"
    /> Ich mache es einfach so, dass ich vor dem try-Block die Variable deklariere und noch eine zusätzliche boolische Variable. Die boolische Variable wird im try-Block zu true, wenn die erste Variable erfolgreich initialisiert wurde. Und in der Exception wird auf diese erste Variable nur dann zugegriffen, wenn die boolische Variable true ist. Das ist doch eine vernünftige Lösung, oder?</p>
</blockquote>
<p>Das erscheint unlogisch. Die Exception kann entweder vor bzw. während der Initialisierung der Variablen auftreten oder erst danach. Nur wenn sie danach auftritt, ist der Zugriff auf diese Variable sinnvoll, zudem ist dann die Behandlung der Ausnahme eine Andere. Folglich sollte auch zwei try-catch-Blöcke geben, etwa so:</p>
<pre><code class="language-cpp">try
{
  /*...*/
  Typ variable = ...
  try
  {
     /*...*/
  }
  catch ( /*...*/ )
  {
      /*...*/ // spezieller Code, der nach der Initialisierung sinnvoll ist
      throw;
  }
}
catch ( /*...*/ )
{
  /* ... */
}
</code></pre>
<p>das kann man auch abwandeln. Natürlich deuten verschachtelte try-catch-Konstrukte oft auf ein anderes Problem hin: Entweder tut die betreffende Funktion nicht nur eine Sache, dann sollte man hier Refactoring betreiben, oder die Behandlung von Ausnahmen wird besser durch RAII z.B. mit Sentries gestaltet. Der automatische Aufruf von Destruktoren ist ja gerade deshalb nützlich, weil sich die Anzahl der möglichen Ausführungspfade nicht multipliziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334420</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 29 Jul 2007 15:48:52 GMT</pubDate></item></channel></rss>