<?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[Exception Handling]]></title><description><![CDATA[<p>Hallo folgende Aufgabe hab ich mir heute zu Gemüte geführt:</p>
<p>**Gegeben sei folgendes Programmfragment:</p>
<pre><code>void DatEin(const char *dateinname, ifstream &amp;eindat)
{
	eindat.open(dateinname);
	if(!dateiname)
	{
		cout &lt;&lt;“Fehler beim Öffnen der Datei“;
		exit(1);
	}
}

int main()
{
	...
	ifstream eindat;
DatEin (“test.dat“, eindat);
return 0;
}
</code></pre>
<p>Verändern Sie die Funktion und die main-Funktion durch Einsatz des Exception-Handling so, dass die Ausgabe der Fehlermeldung und der Aufruf exit(1) durch Auswerfen einer Exception ersetzt und diese Exception abgefangen werden kann.<br />
**</p>
<p>Ok hier mein Lösungsvorschlag</p>
<pre><code>void DatEin (const char *dateiname, ifstream &amp;eindat)
{
	eindat.open(dateiname);
	if(!eindat)  //Falls Zugriff false
         {
               throw “Fehler beim Oeffnen der Eingabedatei!“;
	  }
}

int main()
{
	...
	ifstream eindat;
	try
	  {
		DatEin (“test.dat“, eindat);
	  }
	catch	
           {
	   cout &lt;&lt;“Fehler beim Oeffnen der Eingabedatei “;
	   exit(1);
	  }
	return 0;
}
</code></pre>
<p>und die Frage würde das hier auch gehen wenn ich z.B.</p>
<pre><code>throw 1;
</code></pre>
<p>und im catch Block unten</p>
<pre><code>catch(int)
{ cout&lt;&lt;&quot;Fehler...&quot;;
}
</code></pre>
<p>schreibe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128278/exception-handling</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 15:31:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128278.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Dec 2005 08:49:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 09:15:09 GMT]]></title><description><![CDATA[<p>Hallo folgende Aufgabe hab ich mir heute zu Gemüte geführt:</p>
<p>**Gegeben sei folgendes Programmfragment:</p>
<pre><code>void DatEin(const char *dateinname, ifstream &amp;eindat)
{
	eindat.open(dateinname);
	if(!dateiname)
	{
		cout &lt;&lt;“Fehler beim Öffnen der Datei“;
		exit(1);
	}
}

int main()
{
	...
	ifstream eindat;
DatEin (“test.dat“, eindat);
return 0;
}
</code></pre>
<p>Verändern Sie die Funktion und die main-Funktion durch Einsatz des Exception-Handling so, dass die Ausgabe der Fehlermeldung und der Aufruf exit(1) durch Auswerfen einer Exception ersetzt und diese Exception abgefangen werden kann.<br />
**</p>
<p>Ok hier mein Lösungsvorschlag</p>
<pre><code>void DatEin (const char *dateiname, ifstream &amp;eindat)
{
	eindat.open(dateiname);
	if(!eindat)  //Falls Zugriff false
         {
               throw “Fehler beim Oeffnen der Eingabedatei!“;
	  }
}

int main()
{
	...
	ifstream eindat;
	try
	  {
		DatEin (“test.dat“, eindat);
	  }
	catch	
           {
	   cout &lt;&lt;“Fehler beim Oeffnen der Eingabedatei “;
	   exit(1);
	  }
	return 0;
}
</code></pre>
<p>und die Frage würde das hier auch gehen wenn ich z.B.</p>
<pre><code>throw 1;
</code></pre>
<p>und im catch Block unten</p>
<pre><code>catch(int)
{ cout&lt;&lt;&quot;Fehler...&quot;;
}
</code></pre>
<p>schreibe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932011</guid><dc:creator><![CDATA[Dai]]></dc:creator><pubDate>Fri, 02 Dec 2005 09:15:09 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 09:31:50 GMT]]></title><description><![CDATA[<p>Warum probierst du es nicht einfach aus? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/932037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932037</guid><dc:creator><![CDATA[PuppetMaster2k]]></dc:creator><pubDate>Fri, 02 Dec 2005 09:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 09:45:42 GMT]]></title><description><![CDATA[<p>PuppetMaster2k schrieb:</p>
<blockquote>
<p>Warum probierst du es nicht einfach aus? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Muss man sich eigentlich für alle Theoriefragen rechtfertigen ? Das was da steht, steht momentan bei mir auf Papier, ich versuch das erst zu verstehen UND dann teste ich das aus. Ein Compiler sagt sofort richtig oder falsch aber unter Umständen weisst du nicht wieso. Denk drüber nach...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932057</guid><dc:creator><![CDATA[Dai]]></dc:creator><pubDate>Fri, 02 Dec 2005 09:45:42 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 10:19:43 GMT]]></title><description><![CDATA[<p>Aber wenn du es ausprobierst, wird die den Effekt sehen und kannst dir auch selbst das Verhalten erklären.</p>
<p>Was ist daran zu &quot;Experimentieren&quot;??? Macht jeder Wissenschaftler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932093</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 02 Dec 2005 10:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 10:26:04 GMT]]></title><description><![CDATA[<p>Na gut nachdem hier ja nur blöd rumdiskutiert wird -&gt; anderes Forum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932100</guid><dc:creator><![CDATA[Dai]]></dc:creator><pubDate>Fri, 02 Dec 2005 10:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 10:55:59 GMT]]></title><description><![CDATA[<p>Hallo,<br />
prinzipiell kannst du einen Integer werfen und fangen. Tun solltest du das aber nicht. Primitive Typen (inklusive Strings) sind als Exception-Typen nicht gut geeignet, da sie selbst keinerlei Bedeutung mittragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932121</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Fri, 02 Dec 2005 10:55:59 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 11:11:43 GMT]]></title><description><![CDATA[<p>Dai schrieb:</p>
<blockquote>
<p>Na gut nachdem hier ja nur blöd rumdiskutiert wird -&gt; anderes Forum</p>
</blockquote>
<p>tschüss <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/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/932139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932139</guid><dc:creator><![CDATA[Pellaeon]]></dc:creator><pubDate>Fri, 02 Dec 2005 11:11:43 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 11:14:24 GMT]]></title><description><![CDATA[<p>Dann lies es halt im Standard nach. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/932143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932143</guid><dc:creator><![CDATA[Debugger.]]></dc:creator><pubDate>Fri, 02 Dec 2005 11:14:24 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 15:41:42 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Aber wenn du es ausprobierst, wird die den Effekt sehen und kannst dir auch selbst das Verhalten erklären.</p>
<p>Was ist daran zu &quot;Experimentieren&quot;??? Macht jeder Wissenschaftler.</p>
</blockquote>
<p>Jeder Wissenschaftler... dann frag mal einen Mathematiker.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932482</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Fri, 02 Dec 2005 15:41:42 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 15:55:49 GMT]]></title><description><![CDATA[<p>.. um mal auf's Thema zurück zu kommen. Im C++-Standard sind für Exceptions bestimmte Klassen vorgesehn, die alle von std::exception abgeleitet sind.<br />
Man unterscheidet grob zwischen Runtime-Fehlern und logischen Fehlern. Logische Fehler sind theoretisch vermeidbar. Runtime-Fehler sind solche, die meist auf Grund äußerer Einflüsse einfach auftreten können, und dazu gehört auch das Fehlschlagen von Open-File.</p>
<p>Im Prinzip sollte der Code so aussehen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;stdexcept&gt;  // std::runtime_error; std::logic_error; u.a.

void DatEin (const char *dateiname, std::ifstream &amp;eindat)
{
    eindat.open(dateiname);
    if(!eindat)  //Falls Zugriff false
    {
        throw std::runtime_error( &quot;Fehler beim Oeffnen der Eingabedatei!&quot; );
    }
}

int main()
{
    using namespace std;
    ifstream eindat;
    try
    {
        DatEin (&quot;test.dat&quot;, eindat);
    }
    catch( const std::exception&amp; err )
    {
        cerr &lt;&lt; &quot;Exception: &quot; &lt;&lt;err.what() &lt;&lt; endl;
        return 1;
    }
    return 0;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932497</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 02 Dec 2005 15:55:49 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 15:58:30 GMT]]></title><description><![CDATA[<p>einDat.exceptions(std::ios::badbit);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932501</guid><dc:creator><![CDATA[iojwqerihoqwehior]]></dc:creator><pubDate>Fri, 02 Dec 2005 15:58:30 GMT</pubDate></item><item><title><![CDATA[Reply to Exception Handling on Fri, 02 Dec 2005 18:26:26 GMT]]></title><description><![CDATA[<p>templäd schrieb:</p>
<blockquote>
<p>Artchi schrieb:</p>
<blockquote>
<p>Aber wenn du es ausprobierst, wird die den Effekt sehen und kannst dir auch selbst das Verhalten erklären.</p>
<p>Was ist daran zu &quot;Experimentieren&quot;??? Macht jeder Wissenschaftler.</p>
</blockquote>
<p>Jeder Wissenschaftler... dann frag mal einen Mathematiker.</p>
</blockquote>
<p>Mathematiker rechnen auch viel einfach mal los und gucken dann, ob es hinhaut oO</p>
]]></description><link>https://www.c-plusplus.net/forum/post/932626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/932626</guid><dc:creator><![CDATA[Mathematikstudent]]></dc:creator><pubDate>Fri, 02 Dec 2005 18:26:26 GMT</pubDate></item></channel></rss>