<?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[Exceptions - Was mach ich falsch?]]></title><description><![CDATA[<p>Ich versuche mich gerade etwas an Exceptions und bin jetzt wieder mal mit meinem Latein am Ende. Warum kann ich in folgendem Beispiel die Exception nicht &quot;richtig&quot; fangen?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;exception&gt;

class MyException : public std::exception
{
public:
	MyException() {};
	~MyException() throw() {};
	const char * what() { return &quot;Test&quot;; };
};

int main(int argc, char **argv)
{
	try
	{
		MyException exeption;
		throw exeption;
	}
	catch(std::exception &amp;ex)
	{
		std::cout &lt;&lt; ex.what() &lt;&lt; std::endl;
	}
	return 0;
}
</code></pre>
<p>Ich dachte, dass es durch das erben von möglich sein sollte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> , aber als Output krieg ich &quot;nur&quot;:</p>
<blockquote>
<p>std::exception</p>
</blockquote>
<p>anstatt &quot;test&quot;.</p>
<p>Wo liegt da mein Denkfehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219030/exceptions-was-mach-ich-falsch</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 12:28:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219030.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Jul 2008 21:06:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 21:06:49 GMT]]></title><description><![CDATA[<p>Ich versuche mich gerade etwas an Exceptions und bin jetzt wieder mal mit meinem Latein am Ende. Warum kann ich in folgendem Beispiel die Exception nicht &quot;richtig&quot; fangen?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;exception&gt;

class MyException : public std::exception
{
public:
	MyException() {};
	~MyException() throw() {};
	const char * what() { return &quot;Test&quot;; };
};

int main(int argc, char **argv)
{
	try
	{
		MyException exeption;
		throw exeption;
	}
	catch(std::exception &amp;ex)
	{
		std::cout &lt;&lt; ex.what() &lt;&lt; std::endl;
	}
	return 0;
}
</code></pre>
<p>Ich dachte, dass es durch das erben von möglich sein sollte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> , aber als Output krieg ich &quot;nur&quot;:</p>
<blockquote>
<p>std::exception</p>
</blockquote>
<p>anstatt &quot;test&quot;.</p>
<p>Wo liegt da mein Denkfehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555284</guid><dc:creator><![CDATA[squall23]]></dc:creator><pubDate>Mon, 28 Jul 2008 21:06:49 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 21:13:23 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;exception&gt; 

class MyException : public std::exception 
{ 
public: 
    MyException (const char *string = NULL) : std::exception (string) {}; 
}; 

int main(int argc, char **argv) 
{ 
    try 
    { 
        throw MyException; 
    } 
    catch(std::exception &amp;ex) 
    { 
        std::cout &lt;&lt; ex.what() &lt;&lt; std::endl; 
    } 
    try 
    { 
        throw MyException (&quot;test&quot;); 
    } 
    catch(std::exception &amp;ex) 
    { 
        std::cout &lt;&lt; ex.what() &lt;&lt; std::endl; 
    } 
    return 0; 
}
</code></pre>
<p>So sollte es gehen ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555285</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 28 Jul 2008 21:13:23 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 21:17:40 GMT]]></title><description><![CDATA[<p>Danke mal für die sehr schnelle Antwort! Aber leider nicht.</p>
<p>Mit deinem Programm bekomme ich folgenden Output beim Compilieren:</p>
<blockquote>
<p>../main.cpp: In constructor »MyException::MyException(const char*)«:<br />
../main.cpp:7: Fehler: keine passende Funktion für Aufruf von »std::exception::exception(const char*&amp;)«<br />
/usr/include/c++/4.1.3/exception:57: Anmerkung: Kandidaten sind: std::exception::exception()<br />
/usr/include/c++/4.1.3/exception:55: Anmerkung: std::exception::exception(const std::exception&amp;)<br />
../main.cpp: In function »int main(int, char**)«:<br />
../main.cpp:14: Fehler: expected primary-expression before »;« token<br />
Build error occurred, build is stopped<br />
Time consumed: 784 ms.</p>
</blockquote>
<p>Weil ichs gerade sehe, liegts vll am g++ 4.1.3?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555286</guid><dc:creator><![CDATA[squall23]]></dc:creator><pubDate>Mon, 28 Jul 2008 21:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 21:22:59 GMT]]></title><description><![CDATA[<p>squall23 schrieb:</p>
<blockquote>
<p>Wo liegt da mein Denkfehler?</p>
</blockquote>
<p>Ich glaube, die Signatur deiner what() Methode stimmt nicht, da fehlt noch ein &quot;const throw()&quot;. Deswegen wird deine Methode nicht aufgerufen, sondern die der Basisklasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555290</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Mon, 28 Jul 2008 21:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 21:24:17 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">throw MyException();
</code></pre>
<p>nicht</p>
<pre><code class="language-cpp">throw MyException;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1555293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555293</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 28 Jul 2008 21:24:17 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 21:34:41 GMT]]></title><description><![CDATA[<p>dooooomi schrieb:</p>
<blockquote>
<p>squall23 schrieb:</p>
<blockquote>
<p>Wo liegt da mein Denkfehler?</p>
</blockquote>
<p>Ich glaube, die Signatur deiner what() Methode stimmt nicht, da fehlt noch ein &quot;const throw()&quot;. Deswegen wird deine Methode nicht aufgerufen, sondern die der Basisklasse.</p>
</blockquote>
<p>Du bist mein Held!</p>
<p>Genau das wars! Also so funktionierts:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;exception&gt;

class MyException : public std::exception
{
public:
    MyException() {};
    ~MyException() throw() {};
    const char * what() const throw() { return &quot;Test&quot;; };
};

int main(int argc, char **argv)
{
    try
    {
        throw MyException();
    }
    catch(std::exception &amp;ex)
    {
        std::cout &lt;&lt; ex.what() &lt;&lt; std::endl;
    }
    return 0;
}
</code></pre>
<p><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="👍"
    /> <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="👍"
    /> Danke für die schnelle Hilfe <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="👍"
    /> <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/1555295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555295</guid><dc:creator><![CDATA[squall23]]></dc:creator><pubDate>Mon, 28 Jul 2008 21:34:41 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 22:01:54 GMT]]></title><description><![CDATA[<p>squall23 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;exception&gt;

class MyException : public std::exception
{
public:
    MyException() {};
    ~MyException() throw() {};
    const char * what() const throw() { return &quot;Test&quot;; };
};
</code></pre>
</blockquote>
<p>das is doch doof &gt;&lt;</p>
<p>dann musste es au ne ableiten...</p>
<p>meine klassen sehen alle so aus... fehlte nur noch nen const vorhin. sry ^^</p>
<pre><code class="language-cpp">#include &lt;exception&gt; 

class MyException : public std::exception 
{ 
public: 
    MyException (const char * const string = NULL) : std::exception (string) {}; 
};
</code></pre>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555304</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 28 Jul 2008 22:01:54 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 23:02:42 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>meine klassen sehen alle so aus... fehlte nur noch nen const vorhin. sry ^^</p>
<pre><code class="language-cpp">#include &lt;exception&gt; 

class MyException : public std::exception 
{ 
public: 
    MyException (const char * const string = NULL) : std::exception (string) {}; 
};
</code></pre>
</blockquote>
<p>Öhh... Seit wann hat std::exception einen Konstruktor mit char* als Parameter?</p>
<p>Evtl. wäre es aber nicht verkehrt, bspw. von std::runtime_error abzuleiten, statt direkt von std::exception. Dessen Konstruktor nimmt nämlich einen std::string, der dann von what() ausgegeben wird:</p>
<pre><code class="language-cpp">struct MyException : public std::runtime_error
{
    MyException(std::string const &amp; w)
      : std::runtime_error(w) { }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1555312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555312</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Mon, 28 Jul 2008 23:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 23:14:00 GMT]]></title><description><![CDATA[<p>dooooomi schrieb:</p>
<blockquote>
<p>Öhh... Seit wann hat std::exception einen Konstruktor mit char* als Parameter?</p>
</blockquote>
<p>Lass mich kurz überlegen ... Schon immer? Mir wäre es neu, dass der Konstruktor keinen Parameter annimmt, sonst müssten nämlich alle meine Exceptions nicht funktionieren.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555315</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 28 Jul 2008 23:14:00 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Mon, 28 Jul 2008 23:44:04 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>dooooomi schrieb:</p>
<blockquote>
<p>Öhh... Seit wann hat std::exception einen Konstruktor mit char* als Parameter?</p>
</blockquote>
<p>Lass mich kurz überlegen ... Schon immer? Mir wäre es neu, dass der Konstruktor keinen Parameter annimmt, sonst müssten nämlich alle meine Exceptions nicht funktionieren.</p>
</blockquote>
<p>Also, zumindest beim gcc (4.1.2) gibt es den Konstruktor nicht. std::exception sieht so aus:</p>
<pre><code class="language-cpp">class exception 
{
public:
  exception() throw() { }
  virtual ~exception() throw();
  virtual const char* what() const throw();
};
</code></pre>
<p>Mehr ist da nicht. Das Beispiel von unskilled läßt sich dementsprechend auch nicht kompilieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555328</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555328</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Mon, 28 Jul 2008 23:44:04 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Tue, 29 Jul 2008 00:01:42 GMT]]></title><description><![CDATA[<p>hmm.. ich nehm auch VS ^^</p>
<p>ich weiß nicht genau, wie es im standard vorgeschrieben ist - aber ich weiß nur, dass es da auch schon vor paar jährchen gegangen ist ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555331</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 29 Jul 2008 00:01:42 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Tue, 29 Jul 2008 00:12:06 GMT]]></title><description><![CDATA[<p>Hab grad nachgeschlagen. Das scheint wirklich nicht Standard zu sein. Zumindest nach dem Buch von Bjarne Stroustrupp &quot;Die C++ Programmiersprache&quot; 4. Auflage. Ich programmiere halt seit jeher mit VS und da ist es seit ich mit VS arbeite dabei.</p>
<p>Gut, dann ist die vorgeschlagene Lösung schon richtig. Nur ist glaub ich das <code>throw()</code> nicht nötig anzugeben, <code>const</code> alleine sollte wohl reichen.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555335</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 29 Jul 2008 00:12:06 GMT</pubDate></item><item><title><![CDATA[Reply to Exceptions - Was mach ich falsch? on Tue, 29 Jul 2008 00:58:53 GMT]]></title><description><![CDATA[<p>Hmm...<br />
Ich auch ^^</p>
<p>Aber ich fänd es wirklich ziemlich doof, wenn das nicht gänge ^^</p>
<p>Aber da ich eh bei VS bleib... ;oP</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1555339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1555339</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 29 Jul 2008 00:58:53 GMT</pubDate></item></channel></rss>