<?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[Eigen Exceptionklasse!Wie und was??]]></title><description><![CDATA[<p>Hmm hallo leute,</p>
<p>meine fragen:</p>
<p>1: wie erstelle ich richtig eine eigene exceptionklasse?<br />
d.h wann mach ich sie komplett selber und wann leite ich ab?</p>
<p>wie ist eine eigene klasse aufgebaut? oder wie sollte sie es sein?<br />
vielleicht kann mir da jemand mal ein schönes beispiel oder tolles tutorial geben?</p>
<p>2: was sollte in so eine klasse alles rein, oder was soll sie eigentlich machen? Nur ne fehlermeldung anzeigen? fehler bearbeiten? Wenn ja, wie?</p>
<p>Sorry wegen den vielen fragen, aber ich wollte eben grad eigene exceptions machen, habe bei der überlegung aber gemerkt, das ich keinen richtigen anfang und kein richtiges system finde!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162879/eigen-exceptionklasse-wie-und-was</link><generator>RSS for Node</generator><lastBuildDate>Sat, 12 Sep 2026 19:04:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162879.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Oct 2006 06:48:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 06:48:25 GMT]]></title><description><![CDATA[<p>Hmm hallo leute,</p>
<p>meine fragen:</p>
<p>1: wie erstelle ich richtig eine eigene exceptionklasse?<br />
d.h wann mach ich sie komplett selber und wann leite ich ab?</p>
<p>wie ist eine eigene klasse aufgebaut? oder wie sollte sie es sein?<br />
vielleicht kann mir da jemand mal ein schönes beispiel oder tolles tutorial geben?</p>
<p>2: was sollte in so eine klasse alles rein, oder was soll sie eigentlich machen? Nur ne fehlermeldung anzeigen? fehler bearbeiten? Wenn ja, wie?</p>
<p>Sorry wegen den vielen fragen, aber ich wollte eben grad eigene exceptions machen, habe bei der überlegung aber gemerkt, das ich keinen richtigen anfang und kein richtiges system finde!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160024</guid><dc:creator><![CDATA[asdaskd]]></dc:creator><pubDate>Tue, 24 Oct 2006 06:48:25 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 07:44:40 GMT]]></title><description><![CDATA[<p>Meine Meinung:</p>
<p>Immer von std::exception ableiten, dann kann man immer noch mit what() den Fehler anzeigen wenn der Caller nicht weiß was für eine genaue Exception geworfen wird.</p>
<p>Inhalt der Klasse: Alles was dein Fehler beschreibt (also z.B: SQL Query das nicht geklappt hat, der Fehler des SQL-Servers und die Fehlernummer)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160053</guid><dc:creator><![CDATA[hsdhgsdgdg]]></dc:creator><pubDate>Tue, 24 Oct 2006 07:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 07:54:05 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>das ist ein ganz einfaches Thema: Du kannst ALLES werfen ! (z.B. throw &quot;Simon2&quot;; )<br />
Ich selbst leite meine Exceptionklassen von std::exception ab, aber das braucht's nicht und es gibt auch gute Gründe dagegen.</p>
<p>Und: Das ist ein ganz schweres Thema !<br />
Leider habe ich noch kein einheitliches &quot;AllForOne&quot;-Konzept zum Thema Fehlerbehandlung gefunden. Es gibt verschiedene Techniken, die einem zur Verfügung stehen und aus denen man sich das jeweils geeignete zusammenbasteln muß.<br />
Ein wichtiger Aspekt dabei ist IMO: Was kann der &quot;Exception-Fänger&quot; machen ?<br />
Und zwei wichtige Techniken sind Vererbung und Fehlermeldungen.</p>
<p>So kannst Du einerseits für jede fachliche Fehlersituation eine eigene Klasse definieren und die evtl. von entsprechenden &quot;Bündelungsexceptions&quot; ableiten (z.B. eine Exception &quot;Parameterfehler&quot; und davon ableitet &quot;ParameterTooBig&quot;, ParameterTooSmall&quot;, &quot;ParameterNULL&quot;, ...) Vorteil: Der Fänger kann relativ einfach technisch &quot;fachlich korrigieren&quot; (veschiedene catch-Clauses); Nachteile: Es kommt ziemlich schnell ein Riesenwust von exceptionklassen, die teilweise nicht mehr eindeutig gegeneinander abzugrenzen sind.</p>
<p>Außerdem/Stattdessen kannst Du Deine Exceptionklasse mit einem Fehlermeldungstext ausstatten (solltest Du sogar, wenn Du von std::exception erben möchtest). Vorteil: Weniger Exceptionklassen + einfacher auswertbar für &quot;das menschliche Auge&quot;; Nachteil: maschinell nicht gut auswertbar.</p>
<p>Innerhalb der Exceptionklasse würde ich keine &quot;Ablauflogik&quot; einbauen; die passt doch in immer mehr Fällen nicht mehr. Sie sollte lediglich Informationen über die Ausnahmesituation beinhalten, aber nicht selbst aktiv werden.</p>
<p>Da Du eher am Anfang zu stehen scheinst, würde ich Dir raten, mit beiden Techniken ein wenig rumzuspielen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160056</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 24 Oct 2006 07:54:05 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 08:54:03 GMT]]></title><description><![CDATA[<blockquote>
<p>Außerdem/Stattdessen kannst Du Deine Exceptionklasse mit einem Fehlermeldungstext ausstatten (solltest Du sogar, wenn Du von std::exception erben möchtest). Vorteil: Weniger Exceptionklassen + einfacher auswertbar für &quot;das menschliche Auge&quot;; Nachteil: maschinell nicht gut auswertbar.</p>
</blockquote>
<p>Was meinst du mit maschinell nicht gut auswertbar? Das std::exception zu allgemein ist? Ja, das stimmt. Es gibt aber auch Spezialisierungen von exception:<br />
<a href="http://www.kharchi.de/cppratgeber3.htm#3.3_Standard_Exceptions" rel="nofollow">http://www.kharchi.de/cppratgeber3.htm#3.3_Standard_Exceptions</a></p>
<p>Wenn jemand z.B. an eine Funktion einen ungültigen Parameter übergibt, kann ich std::invalid_argument werfen, muß nicht ein einfaches exception sein. Wenn ein Wert zu groß oder klein ist, werfe ich std::out_of_range. Ich kann aber auch von invalid_argument ableiten und daraus ein invalid_kekse_argument machen. <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>
<p>@asdaskd! Bei einer eigenen Exception-Klasse muß man aufpassen, das diese z.B. nicht selber eine Exception erzeugt. Kann einen Teufelskreis ergeben. <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>
<p>Ich selber versuche meistens die bereits existierenden Klassen zu nutzen, und wenn es doch mal eine eigene sein soll, leite ich von einer der Std-Exceptions ab. Das tue ich um eine spezielle &quot;Aussage&quot; treffen zu können. Z.B. macht es Sinn, in einer Netzwerk-Lib eine connection_failed-Exception zu haben. Die würde ich dann einfach von einer Std-Exception ableiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160110</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 24 Oct 2006 08:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 08:58:34 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Ich selbst leite meine Exceptionklassen von std::exception ab, aber das braucht's nicht und es gibt auch gute Gründe dagegen.</p>
</blockquote>
<p>Ich bin der Meinung, daß Exceptions <strong>immer</strong> direkt oder indirekt von <em>std::exception</em> abgeleitet werden sollten. Die Klasse <em>std::runtime_error</em> ist sehr gut geeignet, u.a. da sie leichter ableitbar ist, als <em>std::exception</em> direkt.</p>
<p>Welche guten Gründe gibt es denn, es nicht so zu tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160118</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Tue, 24 Oct 2006 08:58:34 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 09:03:31 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<blockquote>
<p>Außerdem/Stattdessen kannst Du Deine Exceptionklasse mit einem Fehlermeldungstext ausstatten (solltest Du sogar, wenn Du von std::exception erben möchtest). Vorteil: Weniger Exceptionklassen + einfacher auswertbar für &quot;das menschliche Auge&quot;; Nachteil: maschinell nicht gut auswertbar.</p>
</blockquote>
<p>Was meinst du mit maschinell nicht gut auswertbar? ...</p>
</blockquote>
<p>Wenn man nur eine Exceptionklasse definiert, die im Wesentlichen &quot;Fließtext&quot; anbietet, kann man das nur schwer im catch (oder nachgelagerten Funktionen) auswerten. Ich sage das nur, weil ich Derartiges leider zu oft gesehen habe (&quot;if(e.what()[3] == &quot;g&quot;) { ....&quot; &amp; Co ). Dafür kann man in Fließtext wiederum gut etwas unterbringen, was einem &quot;menschlichen Auswerter&quot; weiterhilft.</p>
<p>Zu &quot;Maschinell auswertbar&quot; eignet sich genau das besser:</p>
<p>Artchi schrieb:</p>
<blockquote>
<p>...<br />
...Wenn jemand z.B. an eine Funktion einen ungültigen Parameter übergibt, kann ich std::invalid_argument werfen ... std::out_of_range., ...invalid_kekse_argument machen....</p>
</blockquote>
<p>Mir geht es nur darum, dass man sich dieses Unterschiedes bewusst ist.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160125</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 24 Oct 2006 09:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 09:05:48 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>...Welche guten Gründe gibt es denn, es nicht so zu tun?</p>
</blockquote>
<p>Habe ich mir nicht gemerkt, weil ich letztlich auch die Ableitung von std::exception die bessere Lösung fand, aber ich weiß, dass ich mal was dazu gelesen habe und dachte &quot;gar nicht so dumm !&quot;.<br />
Mit dieser Floskel wollte ich mich nur gegen &quot;Besserwisser&quot; (echte und selbsternannte) absichern und klarmachen, dass ich meine Meinung nicht für sakrosankt halte. <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>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160130</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 24 Oct 2006 09:05:48 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 09:09:25 GMT]]></title><description><![CDATA[<p>ok, die meinungen an sich habe ich verstanden!<br />
scheint mir auch logisch!</p>
<p>hat jemand viell eine gute seite, wo es praktisch veranschaulicht wird?</p>
<p>ableiten einer eigenen klasse von exception?<br />
eigene fehlerklasse die nicht abgeleitet ist!</p>
<p>richtiger einsatz dieser klassen?</p>
<p>oder kann mir jemand dazu ein beispiel schreiben?</p>
<p>direkt am anfang stehe ich nicht, allerdings habe ich mich mit dem theme der eigenen exception-klassen so noch nicht beschäftigt!</p>
<p>auch bietet mir google da immer nur einen kleinen teil an informationen, ich hätte aber gern ein einfaches aber relativ vollständiges beispiel, welches mir dein einsatz erklärt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160134</guid><dc:creator><![CDATA[asdaskd]]></dc:creator><pubDate>Tue, 24 Oct 2006 09:09:25 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 09:17:43 GMT]]></title><description><![CDATA[<p>Man kann auch eine eigene Exceptionklasse schreiben <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="😉"
    /><br />
Das ist nicht mal so schwer <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="😉"
    /><br />
Hier ist ein Beispiel das ich für C++ und meine Engine(2D/3D) nutze <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>
<p>Deklaration:</p>
<pre><code class="language-cpp">class CException
{
 public:

 CException();
 CException(std::string);
 virtual ~CException();

 virtual void SetError(std::string);
 virtual std::string GetError();
};
</code></pre>
<p>Implementation:</p>
<pre><code class="language-cpp">#include &quot;Exception.h&quot;

CException::CException()
{
 m_StrError=&quot;&quot;;
}

CException::CException(std::string Error)
{
 m_StrError=Error;
}

CException::~CException()
{
}

void CException::SetError(std::string Error)
{
 m_StrError=Error;
}

std::string CException::GetError()
{
 return m_StrError;
}
</code></pre>
<p>Einfach oder?<br />
Aber wenn man es sehr genau haben will, dann sollte man von std::exception und deren Klassen nutzen <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="😉"
    /><br />
Aber für allgemeine Sachen kann man auch das nutzen <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/1160150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160150</guid><dc:creator><![CDATA[MartinMilbret]]></dc:creator><pubDate>Tue, 24 Oct 2006 09:17:43 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 09:19:09 GMT]]></title><description><![CDATA[<p>Hem, wenn du von einer Std-Exception ableitest, ist das ganz einfach:<br />
<a href="http://www.kharchi.de/cppratgeber3.htm#3.4_Eigene_Exceptions" rel="nofollow">http://www.kharchi.de/cppratgeber3.htm#3.4_Eigene_Exceptions</a></p>
<p>Kannst auch noch einen Standard-Konstruktor anbieten, aber meistens will man ja doch einen Begründungstext dazu geben.</p>
<p>Eigene Exceptions sind so zu schreiben, wie du es willst. Gaaaanz einfach ist sowas:</p>
<pre><code class="language-cpp">class meine_exception
{
};
</code></pre>
<p>Reicht schon zum werfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160155</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 24 Oct 2006 09:19:09 GMT</pubDate></item><item><title><![CDATA[Reply to Eigen Exceptionklasse!Wie und was?? on Tue, 24 Oct 2006 10:23:32 GMT]]></title><description><![CDATA[<p>Ein Grund nicht von std::exception ableiten zu sollen ist vielleicht das es keinen Unicode Support hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160193</guid><dc:creator><![CDATA[asoi]]></dc:creator><pubDate>Tue, 24 Oct 2006 10:23:32 GMT</pubDate></item></channel></rss>