<?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[[C++Builder] Problem mit eigener Exceptionklasse]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin gerade dabei mir eine eigene Exceptionklasse zu programmieren!</p>
<p>Die Klasse sieht bis jetzt folgendermaßen aus:</p>
<pre><code class="language-cpp">class c_Fehlerbearbeiter : public Exception
{

   private:

   AnsiString m_asFehlerNachricht;
   AnsiString m_asFehlerCode;
   AnsiString m_asFehlerDatei;
   AnsiString m_asFehlerFunktion;
   AnsiString m_asFehlerZeile;

   void setzeDefault();

   public:

   void bearbeiteFehler(AnsiString, AnsiString, AnsiString, AnsiString, AnsiString );

};
</code></pre>
<p>Die dazugehörigen Methoden sind wie folgt definiert:</p>
<pre><code class="language-cpp">void c_Fehlerbearbeiter::setzeDefault()
{

   m_asFehlerNachricht  = &quot;&quot;;
   m_asFehlerCode       = &quot;&quot;;
   m_asFehlerDatei      = &quot;&quot;;
   m_asFehlerFunktion   = &quot;&quot;;
   m_asFehlerZeile      = &quot;&quot;;

}

void c_Fehlerbearbeiter::bearbeiteFehler(AnsiString asfehlernachricht,
                                         AnsiString asfehlercode,
                                         AnsiString asfehlerdatei,
                                         AnsiString asfehlerfunktion,
                                         AnsiString asfehlerzeile)
{

   setzeDefault();

   m_asFehlerNachricht  = asfehlernachricht;
   m_asFehlerCode       = asfehlercode;
   m_asFehlerDatei      = asfehlerdatei;
   m_asFehlerFunktion   = asfehlerfunktion;
   m_asFehlerZeile      = asfehlerzeile;

}
</code></pre>
<p>Ich rufe über ein erzeugtes Objekt &quot;fehlerbearbeiter&quot; die Methode<br />
&quot;-&gt;bearbeiteFehler&quot; auf</p>
<p>Das klappt auch alles wunderbar. Er liefert mir alle 5 Werte die ich übergeben lasse. Jetzt springt er auch in die Methode &quot;setzeDefault()&quot; und hier passiert der Fehler. Wenn er versucht den AnsiString zu &quot;löschen&quot; bzw. auf NULL zu setzen bringt er folgenden Fehler:</p>
<blockquote>
<p>Im Projekt Fehlerbehandlung.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung:<br />
'Zugriffsverletzung bei Adresse 400068A4 in Modul 'rtl60.bpl'. Schreiben von Adresse 0000000C Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start<br />
fortsetzen.</p>
</blockquote>
<p>Kann mir jemand sagen voran das liegt und wie ich diesen Fehler vermeiden kann?!?!?</p>
<p>Liegt es vielleicht an der Vererbung mit der Exception-Klasse???</p>
<p>Vielen Dank</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/141494/c-builder-problem-mit-eigener-exceptionklasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 19:28:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/141494.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 22 Mar 2006 14:50:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Wed, 22 Mar 2006 14:50:25 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin gerade dabei mir eine eigene Exceptionklasse zu programmieren!</p>
<p>Die Klasse sieht bis jetzt folgendermaßen aus:</p>
<pre><code class="language-cpp">class c_Fehlerbearbeiter : public Exception
{

   private:

   AnsiString m_asFehlerNachricht;
   AnsiString m_asFehlerCode;
   AnsiString m_asFehlerDatei;
   AnsiString m_asFehlerFunktion;
   AnsiString m_asFehlerZeile;

   void setzeDefault();

   public:

   void bearbeiteFehler(AnsiString, AnsiString, AnsiString, AnsiString, AnsiString );

};
</code></pre>
<p>Die dazugehörigen Methoden sind wie folgt definiert:</p>
<pre><code class="language-cpp">void c_Fehlerbearbeiter::setzeDefault()
{

   m_asFehlerNachricht  = &quot;&quot;;
   m_asFehlerCode       = &quot;&quot;;
   m_asFehlerDatei      = &quot;&quot;;
   m_asFehlerFunktion   = &quot;&quot;;
   m_asFehlerZeile      = &quot;&quot;;

}

void c_Fehlerbearbeiter::bearbeiteFehler(AnsiString asfehlernachricht,
                                         AnsiString asfehlercode,
                                         AnsiString asfehlerdatei,
                                         AnsiString asfehlerfunktion,
                                         AnsiString asfehlerzeile)
{

   setzeDefault();

   m_asFehlerNachricht  = asfehlernachricht;
   m_asFehlerCode       = asfehlercode;
   m_asFehlerDatei      = asfehlerdatei;
   m_asFehlerFunktion   = asfehlerfunktion;
   m_asFehlerZeile      = asfehlerzeile;

}
</code></pre>
<p>Ich rufe über ein erzeugtes Objekt &quot;fehlerbearbeiter&quot; die Methode<br />
&quot;-&gt;bearbeiteFehler&quot; auf</p>
<p>Das klappt auch alles wunderbar. Er liefert mir alle 5 Werte die ich übergeben lasse. Jetzt springt er auch in die Methode &quot;setzeDefault()&quot; und hier passiert der Fehler. Wenn er versucht den AnsiString zu &quot;löschen&quot; bzw. auf NULL zu setzen bringt er folgenden Fehler:</p>
<blockquote>
<p>Im Projekt Fehlerbehandlung.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung:<br />
'Zugriffsverletzung bei Adresse 400068A4 in Modul 'rtl60.bpl'. Schreiben von Adresse 0000000C Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start<br />
fortsetzen.</p>
</blockquote>
<p>Kann mir jemand sagen voran das liegt und wie ich diesen Fehler vermeiden kann?!?!?</p>
<p>Liegt es vielleicht an der Vererbung mit der Exception-Klasse???</p>
<p>Vielen Dank</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021758</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Wed, 22 Mar 2006 14:50:25 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Wed, 22 Mar 2006 15:06:17 GMT]]></title><description><![CDATA[<p>schon was von Konstruktoren gehört?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021767</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Wed, 22 Mar 2006 15:06:17 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Wed, 22 Mar 2006 15:10:42 GMT]]></title><description><![CDATA[<p>Ja, <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Aber leider kann ich für diesen Fall irgendwie nicht die richtigen Deklarationen finden.</p>
<p>Kannst du/ihr mir hier vielleicht weiter helfen und mir zeigen wie dieser Konstuktor auszusehen hat??!!</p>
<p>Vielen Dank</p>
<pre><code class="language-cpp">c_Fehlerbearbeiter::c_Fehlerberabeiter()
{

   ??????

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1021769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021769</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Wed, 22 Mar 2006 15:10:42 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Wed, 22 Mar 2006 15:35:57 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ein Konstruktor könnte so aussehen</p>
<pre><code class="language-cpp">class c_Fehlerbearbeiter : public Exception
{
private:
   AnsiString m_asFehlerNachricht;
   AnsiString m_asFehlerCode;
   AnsiString m_asFehlerDatei;
   AnsiString m_asFehlerFunktion;
   AnsiString m_asFehlerZeile;
public:
   c_Fehlerbearbeiter(AnsiString asn, AnsiString asc, AnsiString asd, AnsiString asf, AnsiString asz) : 
       Exception(asn), m_asFehlerNachricht(asn), m_asFehlerCode(asc),
       m_asFehlerDatei(asd), m_asFehlerFunktion(asf), m_asFehlerZeile(asz) {}
};
</code></pre>
<p>Diese SetDefault Funktion brauchst du doch nicht. Dafür brauchst du aber Zugriffsfunktionen auf deine Variablen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1021802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1021802</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 22 Mar 2006 15:35:57 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 07:05:05 GMT]]></title><description><![CDATA[<p>Morgen,</p>
<p>wenn ich jetzt deinen Konstruktor verwende, dann kommt trotzdem der gleiche Fehler heraus.</p>
<p>Ich möchte eigentlich erreichen, dass wenn in meinem Programm eine Exception geschmissen wird, dass dann im catch()-Block die Methode</p>
<pre><code class="language-cpp">void bearbeiteFehler(AnsiString, AnsiString, AnsiString, AnsiString, AnsiString );
</code></pre>
<p>aufgerufen wird. In dieser Methode soll dann der Fehler in ein LogFile geschrieben werden und es sollen verschiedene Sachen gemacht werden. Das Problem ist halt, das ich den AnsiString - Variablen keine Werte zuweisen kann.</p>
<p>Der Konstruktor wir doch dann aufgerufen, wenn ein Objekt der Klasse erzeugt wird, oder?</p>
<p>Also in meinem Hauptprogramm:</p>
<pre><code class="language-cpp">c_Fehlerbearbeiter *fehlerbearbeiter;
</code></pre>
<p>Doch die Zuweisungen mit den AnsiString - Variablen kann doch dann noch nicht statt finden, weil noch keine Werte dafür vorhanden sind, oder??</p>
<p>Kann das von meiner Überlegung überhaupt funktionieren, dass ich die Methode</p>
<pre><code class="language-cpp">bearbeiteFehler(AnsiString, AnsiString, AnsiString, AnsiString, AnsiString );
</code></pre>
<p>aufrufe und das die übergebenen Werte den Attributen der Klasse zugewiesen werden??</p>
<p>Vielen Dank für die Antworten</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022095</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Thu, 23 Mar 2006 07:05:05 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 07:20:05 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">c_Fehlerbearbeiter *fehlerbearbeiter;
</code></pre>
<p>ist nur die Anlage eines Zeigers. Da passiert nix.</p>
<p>Konstructoren werden bei <strong>new</strong> aufgerufen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022105</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Thu, 23 Mar 2006 07:20:05 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 07:21:45 GMT]]></title><description><![CDATA[<p>so ganz scheinst du nicht zu verstehen, wie das exception-handling funktioniert?!</p>
<pre><code class="language-cpp">int IntegerDivision(int a, int b)
{
  // Konstruktor von c_Fehlerbearbeiter aufrufen und Exception generieren
  if (b == 0)
    throw c_Fehlerbearbeiter(&quot;Division durch 0 geht nicht!&quot;, &quot;0&quot;, &quot;&quot;, &quot;IntegerDivision&quot;, &quot;0&quot;);

  return (a / b);
}

void Rechne()
{ 
  try
  {
    int a = Division(4, 2); // alles ok
    int b = Division(4, 0); // löst Exception aus
  }
  catch(const c_Fehlerbearbeiter &amp;ex)
  {
    ShowMessage(&quot;Exception aufgetreten von Typ c_Fehlerbearbeiter!&quot;);

    // Funktion der Exceptionklasse aufrufen um den Fehler in Datei zu schreiben
    ex.WriteErrorToFile();
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1022106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022106</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Thu, 23 Mar 2006 07:21:45 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 07:40:03 GMT]]></title><description><![CDATA[<p>Vielen Dank Sunday für das Beispiel. Ich steige erst neu in das ExceptionHandling ein.<br />
Aber grad noch mal zu deinem Beispiel. Hier ist es ja ein bekannter Fehler den du abfängst und dann ein &quot;throw&quot; definierst, denn du machst ja eine &quot;if&quot;- abfrage!</p>
<p>Bei mir sollen die try+catch - Blöcke aber über größere Methoden gesetzt werden und deshalb möchte ich auch auf unerwartete Fehler reagieren können.<br />
Ist es nun sinnvoll über eine große Methode eine try+catch zu setzen oder ist es besser mehrere davon zu setzen??</p>
<p>Damit man im Prinzip schon weiß welcher Fehler bei dem Programmteil auftreten kann.</p>
<p>Was ich auch nocht nicht so ganz durch blicke ist, dass einige Komponenten ja eine eigene Methode für &quot;Fehler&quot; haben. Eine POP3-Komponente hat zum Beispiel das Ereignis &quot;OnAuthentificationFailed&quot; vordefiniert. Wenn jetzt dieser Fall eintritt, dass die Anmeldung fehlschlägt, springt das Programm ja immer in diese Methode, oder?? Denn da könnte ich ja ein &quot;throw&quot; definieren und dann wäre das Problem an sich gelöst. Doch das heißt, das ich jedes Ereigniss einer Komponente kennen müsste um alle Fälle abzudecken, oder?</p>
<p>Ist das der gängige Weg??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022126</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Thu, 23 Mar 2006 07:40:03 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 08:38:06 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>[quote]Bei mir sollen die try+catch - Blöcke aber über größere Methoden gesetzt werden und deshalb möchte ich auch auf unerwartete Fehler reagieren können.<br />
Ist es nun sinnvoll über eine große Methode eine try+catch zu setzen oder ist es besser mehrere davon zu setzen?? [/cpp]<br />
Du kannst mehrere catch-Blöcke mit verschiedenen Exception-Typen aneinanderhängen. Das fängt meistens bei sehr speziellen Typen an, und hört bei Exception selber auf.</p>
<blockquote>
<p>Was ich auch nocht nicht so ganz durch blicke ist, dass einige Komponenten ja eine eigene Methode für &quot;Fehler&quot; haben. Eine POP3-Komponente hat zum Beispiel das Ereignis &quot;OnAuthentificationFailed&quot; vordefiniert. Wenn jetzt dieser Fall eintritt, dass die Anmeldung fehlschlägt, springt das Programm ja immer in diese Methode, oder?? Denn da könnte ich ja ein &quot;throw&quot; definieren und dann wäre das Problem an sich gelöst. Doch das heißt, das ich jedes Ereigniss einer Komponente kennen müsste um alle Fälle abzudecken, oder?</p>
</blockquote>
<p>Auch alle Indy-Exceptions sind von Exception abgeleitet. Und bei den meistens Funktionen, die gezielt Expetions benutzen, steht es dann auch abei, welcher Typ bei welcher Situation geworfen wird.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022152</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 23 Mar 2006 08:38:06 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 08:29:05 GMT]]></title><description><![CDATA[<p>Vielen Dank schon mal für die Hilfe!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022168</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Thu, 23 Mar 2006 08:29:05 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 09:19:54 GMT]]></title><description><![CDATA[<p>Noch eine Sache:</p>
<p>Wenn eine Exception ausgelöst wird, dann kommt ja meistens diese Fehlermeldung:</p>
<blockquote>
<p>Im Projekt xxxx ist eine Exception der Klasse yyyyy aufgetreten. Meldung:<br />
'zzzzzz'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start<br />
fortsetzen.</p>
</blockquote>
<p>Wie man an die Klasse yyyyy heran kommt ist mir klar, doch wie komm ich an die Meldung: 'zzzzzz' ???</p>
<p>wenn ich folgenden catch-Block habe</p>
<pre><code class="language-cpp">catch(Exception &amp;e)
{
 e.Message;
 e.ClassName;

}
</code></pre>
<p>bekomm ich in beiden Fällen die gleichen Werte! (Der Fehler ist eine EDivByZiro in meinem Fall)</p>
<p>Doch bei der Exception-Message des BCB bekomm ich bei Klasse: EDivByZiro und bei Meldung: 'Division durch Null' angezeigt und diese Meldung würde ich auch gerne bekommen! Wie kann ich daran kommen?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022201</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Thu, 23 Mar 2006 09:19:54 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 09:37:34 GMT]]></title><description><![CDATA[<p>Programm nicht in der IDE ausführen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022214</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Thu, 23 Mar 2006 09:37:34 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 09:43:30 GMT]]></title><description><![CDATA[<p>Also liegt es an dem Debugger? Wie kann ich denn diese ganzen Nachrichten einer Exception-Klasse herausfinden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022217</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Thu, 23 Mar 2006 09:43:30 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 10:19:29 GMT]]></title><description><![CDATA[<p>Es gibt nur die Nachrichten, die in den Membervariablen der entsprechenden Exceptionklasse drin sind. Alles andere wird vom Debugger hinzugefügt, und das kannst du nicht auslesen.<br />
BTW, du brauchst Datei, Funktion und Zeilennummer eigentlich nicht unbedingt mitzugeben. Da existieren fertige Makros. sieh mal nach __LINE__ __FILE__ __FUNC__</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022245</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 23 Mar 2006 10:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to [C++Builder] Problem mit eigener Exceptionklasse on Thu, 23 Mar 2006 10:22:04 GMT]]></title><description><![CDATA[<p>Die __LINE__, __FILE__, und __FUNC__ benutz ich schon!</p>
<p>Aber trotzdem danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1022248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1022248</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Thu, 23 Mar 2006 10:22:04 GMT</pubDate></item></channel></rss>