<?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[Funktions- und Klassennamen automatisch in Exception einbauen]]></title><description><![CDATA[<p>Hallo,</p>
<p>kurze Frage:<br />
Gibt es eine Möglichkeit, exceptions zu automatisieren, so dass sie erkennen, von welcher Klassen und von welcher Funktion sie aufgerufen werden?</p>
<p>also z.B.</p>
<pre><code class="language-cpp">int KlasseA::berechne_eine_zahl(const int &amp; parameter)
{
//...Blablabla

//Ein Fehler tritt auf, meine Fehlerklasse CFehler bekommt einen Fehlertext, den Namen der aufrufenden Klasse und der Funktion
throw CFehler(&quot;Fehler: Parameter ungueltig!&quot;, &quot;KlasseA&quot;,&quot;berechne_eine_zahl&quot;);

//...Blablabla
return ergebnis;
}
</code></pre>
<p>Wenn ich den Namen der Funktion ändere muss ich daran denken, auch alle Exceptions entsprechend abzuändern. Ist das nicht eleganter möglich?</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150228/funktions-und-klassennamen-automatisch-in-exception-einbauen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 13:44:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150228.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Jun 2006 11:03:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktions- und Klassennamen automatisch in Exception einbauen on Wed, 14 Jun 2006 11:03:52 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>kurze Frage:<br />
Gibt es eine Möglichkeit, exceptions zu automatisieren, so dass sie erkennen, von welcher Klassen und von welcher Funktion sie aufgerufen werden?</p>
<p>also z.B.</p>
<pre><code class="language-cpp">int KlasseA::berechne_eine_zahl(const int &amp; parameter)
{
//...Blablabla

//Ein Fehler tritt auf, meine Fehlerklasse CFehler bekommt einen Fehlertext, den Namen der aufrufenden Klasse und der Funktion
throw CFehler(&quot;Fehler: Parameter ungueltig!&quot;, &quot;KlasseA&quot;,&quot;berechne_eine_zahl&quot;);

//...Blablabla
return ergebnis;
}
</code></pre>
<p>Wenn ich den Namen der Funktion ändere muss ich daran denken, auch alle Exceptions entsprechend abzuändern. Ist das nicht eleganter möglich?</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077487</guid><dc:creator><![CDATA[KeineAhnung78]]></dc:creator><pubDate>Wed, 14 Jun 2006 11:03:52 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions- und Klassennamen automatisch in Exception einbauen on Wed, 14 Jun 2006 11:30:49 GMT]]></title><description><![CDATA[<p>Hoi,<br />
Also die einzige Möglichkeit, eine Funktion 'zu intetifizieren' ist, soweit ich weiß nur ihre Adresse im Hauptspeicher...und die dürfte dir in diesem Fall wohl nicht großartig weiterhelfen...</p>
<p>Was mit dennoch einfällt:<br />
Du kannst doch bspw so etwas machen:</p>
<pre><code class="language-cpp">// Anzahl aller Funktionen, deren Namen gespeichert werden sollen:
#define NUMBER_OF_FUNCTIONS   (100)

// jder Funktion eine ID geben, die gleichzeitig als Array-Index dient:
#define FKT_berechne_eine_zahl  (0)

// alle Namen in nem Array (z.B.: global):
std::string strFuncNameTab[NUMBER_OF_FUNCTION] = { &quot;berechne_eine_zahl&quot;, /*usw. ...*/ };
</code></pre>
<pre><code class="language-cpp">int KlasseA::berechne_eine_zahl(const int &amp; parameter)
{
//...Blablabla

//Ein Fehler tritt auf, meine Fehlerklasse CFehler bekommt einen Fehlertext, den Namen der aufrufenden Klasse und der Funktion
throw CFehler(&quot;Fehler: Parameter ungueltig!&quot;, &quot;KlasseA&quot;,strFuncNameTab[FKT_berechne_eine_zahl]);

//...Blablabla
return ergebnis;
}
</code></pre>
<p>so müsstest du <strong>rein theoretisch</strong> nur den Inhalt des Arrays und der Funktion selbst anpassen...</p>
<p>Tjo...mehr fällt mir auch nicht ein... <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/1077511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077511</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 14 Jun 2006 11:30:49 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions- und Klassennamen automatisch in Exception einbauen on Wed, 14 Jun 2006 11:50:10 GMT]]></title><description><![CDATA[<p>Man kann automatisch Dateiname und Zeilennummer übergeben lassen. Das müsste doch schon reichen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077529</guid><dc:creator><![CDATA[line]]></dc:creator><pubDate>Wed, 14 Jun 2006 11:50:10 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions- und Klassennamen automatisch in Exception einbauen on Wed, 14 Jun 2006 12:12:03 GMT]]></title><description><![CDATA[<p>Also in VC gibts nen paar zusätzliche Makros neben __LINE__ und __FILE__ unter anderem ein __FUNCTION__ (und rate mal was es macht).<br />
Den Klassennamen kannste zumindest mit einem typeid(Klasse).name() rausfinden, erfordert aber, dass RTTI aktiviert wird.<br />
Außerdem ist die Art wie eine Klasse angegeben wird nicht festgelegt, aber ein normaler Compiler spuckt zumindest den Namen mit aus. (Der VC hängt aber überall noch ein &quot;class&quot; an, also statt Foo steht dann da &quot;class Foo&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077545</guid><dc:creator><![CDATA[Dr. Prof]]></dc:creator><pubDate>Wed, 14 Jun 2006 12:12:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions- und Klassennamen automatisch in Exception einbauen on Wed, 14 Jun 2006 12:14:39 GMT]]></title><description><![CDATA[<p>line schrieb:</p>
<blockquote>
<p>Man kann automatisch Dateiname und Zeilennummer übergeben lassen. Das müsste doch schon reichen!</p>
</blockquote>
<p>jo, dafür gibt es folgende Makros:</p>
<pre><code>- Für den Dateinamen: __FILE__

- Für Zeilennummer: __LINE__

- Für das Compilierungdatum: __DATE__

- Für die Compilierungszeit: __TIME__
</code></pre>
<p>das wären die wichtigsten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077549</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 14 Jun 2006 12:14:39 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions- und Klassennamen automatisch in Exception einbauen on Wed, 14 Jun 2006 13:05:04 GMT]]></title><description><![CDATA[<p>Danke <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/1077582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077582</guid><dc:creator><![CDATA[KeineAhnung78]]></dc:creator><pubDate>Wed, 14 Jun 2006 13:05:04 GMT</pubDate></item></channel></rss>