<?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[Anfängerfrage zu CException]]></title><description><![CDATA[<p>Hallo,<br />
bitte nicht lachen, ich hab ne ganz blöde Frage...<br />
Ich habe eine eigene Klasse CCustomException von CException abgeleitet,<br />
um damit ein Errorprotokoll zu schreiben. Wird ein Fehler ausgelöst, kommt über die AddErrorToList ein neuer Error ins File. Funktioniert ja alles einwandfrei, ist mir aber völlig unlogisch.<br />
Ich kann die ohnehin als public deklarierte Methode AddErrorToList doch genauso auch schon in der if-Schleife des try-Blocks machen?<br />
Wozu also noch das catch?<br />
Ist da das Beispiel, nachdem ich das gemacht habe, einfach mistig, oder versteh ich da was falsch?</p>
<pre><code>try
	{
		if (// Irgendwas geht schief)
		{
		     CString Error;
		     throw(Error);
                }
	} 
	catch(CString _Error)
	{
		// Zu Debugzwecken... Ausgabe des Errors in MessageBox
		AfxMessageBox(_Error);
		CCustomException Exception;
                Exception.AddErrorToList(_Error);
	}
</code></pre>
<p>Im Voraus schon mal besten Dank<br />
der Unwissende Squeegee <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/123005/anfängerfrage-zu-cexception</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 11:11:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123005.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Oct 2005 08:05:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage zu CException on Wed, 12 Oct 2005 08:05:54 GMT]]></title><description><![CDATA[<p>Hallo,<br />
bitte nicht lachen, ich hab ne ganz blöde Frage...<br />
Ich habe eine eigene Klasse CCustomException von CException abgeleitet,<br />
um damit ein Errorprotokoll zu schreiben. Wird ein Fehler ausgelöst, kommt über die AddErrorToList ein neuer Error ins File. Funktioniert ja alles einwandfrei, ist mir aber völlig unlogisch.<br />
Ich kann die ohnehin als public deklarierte Methode AddErrorToList doch genauso auch schon in der if-Schleife des try-Blocks machen?<br />
Wozu also noch das catch?<br />
Ist da das Beispiel, nachdem ich das gemacht habe, einfach mistig, oder versteh ich da was falsch?</p>
<pre><code>try
	{
		if (// Irgendwas geht schief)
		{
		     CString Error;
		     throw(Error);
                }
	} 
	catch(CString _Error)
	{
		// Zu Debugzwecken... Ausgabe des Errors in MessageBox
		AfxMessageBox(_Error);
		CCustomException Exception;
                Exception.AddErrorToList(_Error);
	}
</code></pre>
<p>Im Voraus schon mal besten Dank<br />
der Unwissende Squeegee <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/890293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890293</guid><dc:creator><![CDATA[Squeegee]]></dc:creator><pubDate>Wed, 12 Oct 2005 08:05:54 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu CException on Wed, 12 Oct 2005 08:15:16 GMT]]></title><description><![CDATA[<p>Klar geht das auch.</p>
<p>Aber wie wäre es mit sowas:</p>
<pre><code class="language-cpp">try
{
IstDieseEingabeOkay();
JeneAuch();
UndUeberhaupt();
// mach das, was im Falle von &quot;kein Fehler&quot; gemacht werden soll
}
catch (...)
{
//...
}
</code></pre>
<p>Da wird von innerhalb der Funktionen geworfen, das ist schön übersichtlich.<br />
Du kannst sowas dann auch in deine eigenen Klassen einbauen und die selber Prüfen lassen.</p>
<p>Klar kann man mit Rückgabewerten und vielen ifs das Selbe erreichen. Ist aber nicht so schön übersichtlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890301</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Wed, 12 Oct 2005 08:15:16 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu CException on Wed, 12 Oct 2005 08:23:56 GMT]]></title><description><![CDATA[<p>erste regel bei exceptions: alles was schief gehen kann so früh wie möglich machen!</p>
<p>p.s. es gibt keine if - schleifen <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/890309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890309</guid><dc:creator><![CDATA[Psycho]]></dc:creator><pubDate>Wed, 12 Oct 2005 08:23:56 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu CException on Wed, 12 Oct 2005 08:33:36 GMT]]></title><description><![CDATA[<p>@estartu_de:<br />
nochmal nachfragen, ob ich das richtig verstanden habe:<br />
throw ist praktisch, wie wenn ich einen Interrupt auslöse (ich komme eigentlich auch der µP-Programmierung). Innerhalb der IstDieseEingabeOkay() oder irgendeiner anderen Methode hab ich also über eine if-Anweisung was abgefangen, werfe dort, er springt sofort in den catch-Teil, führt diesen auf und springt dann an die nächste Anweisung nach dem throw?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/236">@Psycho</a>:<br />
Upps, gemeint war natürlich ne If-Anweisung...</p>
<p>Gruß und Dank Squeegee</p>
<p>Ähem... Ich glaub eher er springt dann ans Ende der Catch, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890321</guid><dc:creator><![CDATA[Squeegee]]></dc:creator><pubDate>Wed, 12 Oct 2005 08:33:36 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu CException on Wed, 12 Oct 2005 08:33:13 GMT]]></title><description><![CDATA[<blockquote>
<p>springt dann an die nächste Anweisung nach dem throw?</p>
</blockquote>
<p>nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890324</guid><dc:creator><![CDATA[.............]]></dc:creator><pubDate>Wed, 12 Oct 2005 08:33:13 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu CException on Wed, 12 Oct 2005 09:44:21 GMT]]></title><description><![CDATA[<p>Squeegee schrieb:</p>
<blockquote>
<p>@estartu_de:<br />
nochmal nachfragen, ob ich das richtig verstanden habe:<br />
throw ist praktisch, wie wenn ich einen Interrupt auslöse (ich komme eigentlich auch der µP-Programmierung). Innerhalb der IstDieseEingabeOkay() oder irgendeiner anderen Methode hab ich also über eine if-Anweisung was abgefangen, werfe dort, er springt sofort in den catch-Teil, führt diesen auf und springt dann an die nächste Anweisung nach dem throw?</p>
<p>Ähem... Ich glaub eher er springt dann ans Ende der Catch, oder?</p>
</blockquote>
<p>Assembler-Programmierung ist lange her, aber ich denke, man kann das vergleichen.<br />
Sobald etwas geworfen wird, springt der SOFORT ohne weitere Umwege zum ersten catch-Block.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">try
{
wirfBirne();
}
catch (Apfel) // passt nicht
{
// wird nicht ausgeführt
}
catch (Birne) // passt
{
// wird ausgeführt
}
catch (...) // alles andere - aber es wurde ja was passendes gefunden
{
// wird nicht ausgeführt
}
</code></pre>
<p>Okay? <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/890394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890394</guid><dc:creator><![CDATA[estartu]]></dc:creator><pubDate>Wed, 12 Oct 2005 09:44:21 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu CException on Wed, 12 Oct 2005 11:45:44 GMT]]></title><description><![CDATA[<p>Alles klar,<br />
vielen Dank (übrigens auch für alle anderen Fragen, die du mir schon beantwortet hast...)</p>
<p>Gruß Squeegee</p>
]]></description><link>https://www.c-plusplus.net/forum/post/890508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/890508</guid><dc:creator><![CDATA[Squeegee]]></dc:creator><pubDate>Wed, 12 Oct 2005 11:45:44 GMT</pubDate></item></channel></rss>