<?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[Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden.]]></title><description><![CDATA[<p>hallo,</p>
<p>wie es im topic steht ist meine aufgabe eine eigene exceptionklasse zu schreiben. ich soll exceptions fangen und werfen, aber dabei sollen die objekte mit denen ich arbeite nicht destruiert werden was mich ein wenig verwirrt.</p>
<p>hier ist mein code:</p>
<pre><code class="language-cpp">class MyException : std::exception {
   public:   
      virtual const char* what() const throw() {
        return &quot;eigene Ausnahme&quot;;
      }
};

class Obj {
   public:   
      Obj(char* c) {
        cout &lt;&lt; &quot;Obj &quot; &lt;&lt; c &lt;&lt; &quot; erzeugt&quot; &lt;&lt; endl;
      }
      ~Obj() {
        cout &lt;&lt; &quot;Obj tot&quot; &lt;&lt; endl;
      }         
};     

int test(int i) {
    if (i == 10)
      return 30/i;
    else
      throw MyException();
} 

int main() {
    try {
      Obj* p = new Obj(&quot;p&quot;);
      Obj* o = new Obj(&quot;o&quot;);
      Obj* m = new Obj(&quot;m&quot;);
      Obj* n = new Obj(&quot;n&quot;);
      cout &lt;&lt; test(10) &lt;&lt; endl;
      test(3);
    } catch (MyException&amp; e) {
      cout &lt;&lt; &quot;Eine Exception ist aufgetreten: &quot;  &lt;&lt; e.what() &lt;&lt; endl;
    }              
    system(&quot;pause&quot;);
    return 0;
}
</code></pre>
<p>ich muss das programm halt noch umschreiben, dass ich die methode mit den objekten aufrufe, aber im grunde genommen ist doch alles so richtig oder hab ich da was grunlegendes falsch verstanden? wenn ja, wie würdet ihr diese aufgabe lösen?</p>
<p>vielen dank schonmal für die antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200281/objekte-die-trotz-geworfener-und-gefangener-exception-nicht-destruiert-werden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 18:50:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200281.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Dec 2007 20:33:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden. on Wed, 12 Dec 2007 20:33:25 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>wie es im topic steht ist meine aufgabe eine eigene exceptionklasse zu schreiben. ich soll exceptions fangen und werfen, aber dabei sollen die objekte mit denen ich arbeite nicht destruiert werden was mich ein wenig verwirrt.</p>
<p>hier ist mein code:</p>
<pre><code class="language-cpp">class MyException : std::exception {
   public:   
      virtual const char* what() const throw() {
        return &quot;eigene Ausnahme&quot;;
      }
};

class Obj {
   public:   
      Obj(char* c) {
        cout &lt;&lt; &quot;Obj &quot; &lt;&lt; c &lt;&lt; &quot; erzeugt&quot; &lt;&lt; endl;
      }
      ~Obj() {
        cout &lt;&lt; &quot;Obj tot&quot; &lt;&lt; endl;
      }         
};     

int test(int i) {
    if (i == 10)
      return 30/i;
    else
      throw MyException();
} 

int main() {
    try {
      Obj* p = new Obj(&quot;p&quot;);
      Obj* o = new Obj(&quot;o&quot;);
      Obj* m = new Obj(&quot;m&quot;);
      Obj* n = new Obj(&quot;n&quot;);
      cout &lt;&lt; test(10) &lt;&lt; endl;
      test(3);
    } catch (MyException&amp; e) {
      cout &lt;&lt; &quot;Eine Exception ist aufgetreten: &quot;  &lt;&lt; e.what() &lt;&lt; endl;
    }              
    system(&quot;pause&quot;);
    return 0;
}
</code></pre>
<p>ich muss das programm halt noch umschreiben, dass ich die methode mit den objekten aufrufe, aber im grunde genommen ist doch alles so richtig oder hab ich da was grunlegendes falsch verstanden? wenn ja, wie würdet ihr diese aufgabe lösen?</p>
<p>vielen dank schonmal für die antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419649</guid><dc:creator><![CDATA[venomicious]]></dc:creator><pubDate>Wed, 12 Dec 2007 20:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden. on Wed, 12 Dec 2007 21:46:08 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>wenn ich richtig verstanden habe, ist Dein <em>Ziel</em>, das die Obj-Objekte eine fliegende Exception überleben - richtig ?</p>
<p>DANN ist das korrekt, wie Du das machst.<br />
Allerdings wäre Folgendes wohl einfacher (und auch &quot;Speicherleck-sicherer&quot;):</p>
<pre><code class="language-cpp">int main() {
   Obj p(&quot;p&quot;);
   Obj o(&quot;o&quot;);
   Obj q(&quot;q&quot;);
   Obj r(&quot;r&quot;);
   try {
     cout &lt;&lt; test(10) &lt;&lt; endl;
     test(3);
   }
   catch (MyException&amp; e) {
      cout &lt;&lt; &quot;Eine Exception ist aufgetreten: &quot;  &lt;&lt; e.what() &lt;&lt; endl;
   }              
// Hier existieren p, o, q, r noch...
</code></pre>
<p>Das geht aber nicht mehr, wenn die Objekte erst innerhalb des try-Blocks erzeugt werden können....</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419677</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 12 Dec 2007 21:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden. on Wed, 12 Dec 2007 22:00:03 GMT]]></title><description><![CDATA[<p>Und direkt zum restlichen stil:</p>
<pre><code class="language-cpp">class Obj {
   public:  
      Obj(char* c) {
        cout &lt;&lt; &quot;Obj &quot; &lt;&lt; c &lt;&lt; &quot; erzeugt&quot; &lt;&lt; endl;
      }
      ~Obj() {
        cout &lt;&lt; &quot;Obj tot&quot; &lt;&lt; endl;
      }        
};    

int test(int i) {
    if (i == 10)
      return 30/i;
    else
      throw MyException();
}
</code></pre>
<p>Hmm ... man sollte, wenn möglich, const setzen, und wenn Werte sich im Vorfeld berechnen lassen, dies auch gerne schonmal tun.</p>
<pre><code class="language-cpp">class foo
{
    std::ostream&amp; m_out;

public:
    foo(const char* name, std::ostream&amp; out = std::cout)
        : m_out(out)
    { out &lt;&lt; name &lt;&lt; &quot;.{ c-tor }&quot;; }
    ~foo()
    { out &lt;&lt; &quot;{ d-tor }&quot;; }
};

int test(int x)
{ 
    if (x != 10) throw MyException();
    return 3;
}
</code></pre>
<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419682</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 12 Dec 2007 22:00:03 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden. on Wed, 12 Dec 2007 22:19:45 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Und direkt zum restlichen stil:</p>
<pre><code class="language-cpp">class foo
{
    std::ostream&amp; m_out;

public:
    foo(const char* name, std::ostream&amp; out = std::cout)
        : m_out(out)
    { out &lt;&lt; name &lt;&lt; &quot;.{ c-tor }&quot;; }
    ~foo()
    { out &lt;&lt; &quot;{ d-tor }&quot;; }
};

int test(int x)
{ 
    if (x != 10) throw MyException();
    return 3;
}
</code></pre>
</blockquote>
<p>ein bisschen überflüssig, hier. da wäre ich gleich von anfang an für ein sinnvolles MVC-modell. bringt dem OP nichts.</p>
<p>ich bin mir allerdings auch gar nicht sicher, was der will.</p>
<p>die aufgabenstellung hört sich ein bisschen so an wie: &quot;kennen sie ``function-try-blöcke''?&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419684</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 12 Dec 2007 22:19:45 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden. on Wed, 12 Dec 2007 22:31:11 GMT]]></title><description><![CDATA[<p>vielen dank für die antworten, ja die aufgabe war es die objekte am &quot;leben&quot; zu lassen. ich habe inzwischen auch herausgefunden, dass mein programm der lösung sehr nahe kommt.</p>
<p>vielen dank nochmal an die antworter!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419688</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419688</guid><dc:creator><![CDATA[venomicious]]></dc:creator><pubDate>Wed, 12 Dec 2007 22:31:11 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden. on Wed, 12 Dec 2007 22:59:41 GMT]]></title><description><![CDATA[<p>venomicious schrieb:</p>
<blockquote>
<p>vielen dank für die antworten, ja die aufgabe war es die objekte am &quot;leben&quot; zu lassen. ich habe inzwischen auch herausgefunden, dass mein programm der lösung sehr nahe kommt.</p>
<p>vielen dank nochmal an die antworter!!</p>
</blockquote>
<p>das problem ist: nach dem werfen der exception &quot;existieren&quot; deine objekte zwar noch, allerdings nur in anführungszeichen: es gibt keine möglichkeit mehr, auf sie zuzugreifen (und beispielsweise ihren speicher freizugeben -&gt; memory leak)</p>
<p>kannst du mal die originale aufgabenstellung (1 zu 1) posten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419701</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 12 Dec 2007 22:59:41 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden. on Thu, 13 Dec 2007 13:49:33 GMT]]></title><description><![CDATA[<p>Aufgabe 1:<br />
Schreiben Sie ein Programm, bei dem in einem Try Block Objekte angelegt<br />
werden, die trotz eines geworfenen und gefangenen Exception nicht destruiert<br />
werden.</p>
<p>der prof meinte gerade, dass er selber nicht mehr genau weiß warum er diese aufgabe so gestellt hat, da die objekte ja so und so nicht destruiert werden (wenn sie mit new erzeugt wurden), wenn man nicht delete x; usw. aufruft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419961</guid><dc:creator><![CDATA[venomicious]]></dc:creator><pubDate>Thu, 13 Dec 2007 13:49:33 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden. on Thu, 13 Dec 2007 13:55:00 GMT]]></title><description><![CDATA[<p>Und wenn man sie ohne new erzeugt? (Davon steht in der Aufgabe nämlich nichts)</p>
<p>Aber Profs, die nicht wissen was sie tun, kennen wir ja genug <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/1419967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419967</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 13 Dec 2007 13:55:00 GMT</pubDate></item><item><title><![CDATA[Reply to Objekte, die trotz geworfener und gefangener Exception nicht destruiert werden. on Thu, 13 Dec 2007 14:46:14 GMT]]></title><description><![CDATA[<p>Hi venomicious,</p>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>Und wenn man sie ohne new erzeugt? (Davon steht in der Aufgabe nämlich nichts)...</p>
</blockquote>
<p>Siehe Dir dazu nochmal meinen Vorschlag oben an.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419987</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 13 Dec 2007 14:46:14 GMT</pubDate></item></channel></rss>