<?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[Throw-Try-Catch Problem]]></title><description><![CDATA[<p>Hi Leutz,</p>
<p>Wollte fragen, ob es eine Möglichkeit gibt bei throw catch Statements mehrere Exceptions vom gleichen Typ zb. Int zu werfen ....<br />
Habs in dem kleinen Prog hier denk ich mal ziemlich hässlich gelöst. Geht das auch schöner? Hier im konkreten Fall beispielsweise mit zwei Int Werten, die geworfen werden.....ich frag mich nur wie dann das catch statement die zwei auseinander halten soll. Grüße</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;cmath&gt;
#include &lt;stdexcept&gt;

using namespace std;

int main(){

	try{
	vector &lt;int&gt; addierer;
	int zahlenwerte= 0;
	int speicherwert = 0;
	int aufaddierer=0;
	int ergebnis=0;
	char beender = ' ';

	cout &lt;&lt; &quot;Bitte geben Sie eine beliebige Anzahl von Zahlenwerten ein (Nur Ganzzahlige Werte!) &quot; &lt;&lt; '\n';
	cout &lt;&lt; '\n';

	while(cin &gt;&gt; zahlenwerte &amp;&amp; beender != '|'){			// Speichert die vom Benutzer eingebenen Elemente
		addierer.push_back(zahlenwerte);
	}

	cout &lt;&lt; &quot;Danke fuer ihre Eingabe! &quot; &lt;&lt; '\n';
	cout &lt;&lt; &quot;Sie haben &quot; &lt;&lt; addierer.size() &lt;&lt; &quot; Elemente eingebeben!&quot; &lt;&lt;  '\n';

	cin.clear();											// Löscht den Buffer
	cin.ignore();

	cout &lt;&lt; &quot;Wie viele Elemente wollen sie addieren?&quot; &lt;&lt; endl;
	cin &gt;&gt; speicherwert;

	if(!cin){
		throw(1.2);
	}

	if(speicherwert&gt;addierer.size()){						// Prüft, ob die Eingabe des benutzers korrekt ist 
		throw(1);
	}

	cout &lt;&lt; &quot;Die ersten &quot; &lt;&lt; speicherwert &lt;&lt; &quot; Elemente werden addiert ..&quot; &lt;&lt; endl;

	for(int i=0; i&lt;speicherwert; i++){						// Addiert die Anzahl der gewünschen Elemente
		aufaddierer+=addierer[i];
	}

	ergebnis=aufaddierer;
	cout &lt;&lt; &quot;Die Summer lautet: &quot; &lt;&lt; ergebnis &lt;&lt; &quot; !&quot; &lt;&lt; endl;
	}

	catch(int){
		cerr &lt;&lt; &quot;Error: Input greater than Elements of Vector Container!&quot; &lt;&lt; '\n';
		cerr &lt;&lt; &quot;Exiting programm...&quot; &lt;&lt; '\n';
	}

	catch(double){
		cerr &lt;&lt; &quot;Error: Please enter a correct integer value for calculation !&quot; &lt;&lt; '\n';
	}

	catch (...){
		cerr &lt;&lt; &quot;Unexpected Error ocurred !&quot; &lt;&lt; endl;
	}

	cin.clear();
	cin.ignore();
	cin.get();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/303821/throw-try-catch-problem</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 06:31:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/303821.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 May 2012 10:34:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Throw-Try-Catch Problem on Wed, 23 May 2012 10:34:13 GMT]]></title><description><![CDATA[<p>Hi Leutz,</p>
<p>Wollte fragen, ob es eine Möglichkeit gibt bei throw catch Statements mehrere Exceptions vom gleichen Typ zb. Int zu werfen ....<br />
Habs in dem kleinen Prog hier denk ich mal ziemlich hässlich gelöst. Geht das auch schöner? Hier im konkreten Fall beispielsweise mit zwei Int Werten, die geworfen werden.....ich frag mich nur wie dann das catch statement die zwei auseinander halten soll. Grüße</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;vector&gt;
#include &lt;string&gt;
#include &lt;cmath&gt;
#include &lt;stdexcept&gt;

using namespace std;

int main(){

	try{
	vector &lt;int&gt; addierer;
	int zahlenwerte= 0;
	int speicherwert = 0;
	int aufaddierer=0;
	int ergebnis=0;
	char beender = ' ';

	cout &lt;&lt; &quot;Bitte geben Sie eine beliebige Anzahl von Zahlenwerten ein (Nur Ganzzahlige Werte!) &quot; &lt;&lt; '\n';
	cout &lt;&lt; '\n';

	while(cin &gt;&gt; zahlenwerte &amp;&amp; beender != '|'){			// Speichert die vom Benutzer eingebenen Elemente
		addierer.push_back(zahlenwerte);
	}

	cout &lt;&lt; &quot;Danke fuer ihre Eingabe! &quot; &lt;&lt; '\n';
	cout &lt;&lt; &quot;Sie haben &quot; &lt;&lt; addierer.size() &lt;&lt; &quot; Elemente eingebeben!&quot; &lt;&lt;  '\n';

	cin.clear();											// Löscht den Buffer
	cin.ignore();

	cout &lt;&lt; &quot;Wie viele Elemente wollen sie addieren?&quot; &lt;&lt; endl;
	cin &gt;&gt; speicherwert;

	if(!cin){
		throw(1.2);
	}

	if(speicherwert&gt;addierer.size()){						// Prüft, ob die Eingabe des benutzers korrekt ist 
		throw(1);
	}

	cout &lt;&lt; &quot;Die ersten &quot; &lt;&lt; speicherwert &lt;&lt; &quot; Elemente werden addiert ..&quot; &lt;&lt; endl;

	for(int i=0; i&lt;speicherwert; i++){						// Addiert die Anzahl der gewünschen Elemente
		aufaddierer+=addierer[i];
	}

	ergebnis=aufaddierer;
	cout &lt;&lt; &quot;Die Summer lautet: &quot; &lt;&lt; ergebnis &lt;&lt; &quot; !&quot; &lt;&lt; endl;
	}

	catch(int){
		cerr &lt;&lt; &quot;Error: Input greater than Elements of Vector Container!&quot; &lt;&lt; '\n';
		cerr &lt;&lt; &quot;Exiting programm...&quot; &lt;&lt; '\n';
	}

	catch(double){
		cerr &lt;&lt; &quot;Error: Please enter a correct integer value for calculation !&quot; &lt;&lt; '\n';
	}

	catch (...){
		cerr &lt;&lt; &quot;Unexpected Error ocurred !&quot; &lt;&lt; endl;
	}

	cin.clear();
	cin.ignore();
	cin.get();

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2214423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214423</guid><dc:creator><![CDATA[H4rdstyl3]]></dc:creator><pubDate>Wed, 23 May 2012 10:34:13 GMT</pubDate></item><item><title><![CDATA[Reply to Throw-Try-Catch Problem on Wed, 23 May 2012 10:41:06 GMT]]></title><description><![CDATA[<p>H4rdstyl3 schrieb:</p>
<blockquote>
<p>Hi Leutz,</p>
<p>Wollte fragen, ob es eine Möglichkeit gibt bei throw catch Statements mehrere Exceptions vom gleichen Typ zb. Int zu werfen ....</p>
</blockquote>
<p>Äh.. natürlich. Das wäre doch total sinnlos anders. <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="😕"
    /><br />
Normalerweise wirft man std::runtime_error oder std::logic_error oder etwas Äquivalentes.<br />
z.B.</p>
<pre><code class="language-cpp">#include &lt;stdexcept&gt;

int main()
{
  try
  {
    throw std::runtime_error(&quot;Waahhh alles kaputt&quot;);
  }
  catch (const std::runtime_error&amp; e)
  {
    std::cerr &lt;&lt; &quot;Runtime error: &quot; &lt;&lt; e.what() &lt;&lt; '\n';
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2214426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214426</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 23 May 2012 10:41:06 GMT</pubDate></item><item><title><![CDATA[Reply to Throw-Try-Catch Problem on Wed, 23 May 2012 10:45:03 GMT]]></title><description><![CDATA[<p>Ich glaube der Threadersteller meint dies (was selbstverständlich auch geht, wäre doch total sinnlos anders.):</p>
<pre><code class="language-cpp">#include &lt;stdexcept&gt;
#include &lt;ctime&gt;
#include &lt;iostream&gt;

int main()
{
  try
  {
    if (std::time(0) % 2) 
      throw std::runtime_error(&quot;Waaaahhh!&quot;);
    else
      throw std::runtime_error(&quot;Rabäääähhh!&quot;);
  }
  catch (const std::runtime_error&amp; e)
  {
    std::cerr &lt;&lt; &quot;Runtime error: &quot; &lt;&lt; e.what() &lt;&lt; '\n';
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2214430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214430</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 23 May 2012 10:45:03 GMT</pubDate></item><item><title><![CDATA[Reply to Throw-Try-Catch Problem on Wed, 23 May 2012 10:49:46 GMT]]></title><description><![CDATA[<p>Wenn es nicht darum geht, den Umgang mit Exceptions zu erlernen, dann würde ich hier gar keine Exceptions benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214431</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 23 May 2012 10:49:46 GMT</pubDate></item><item><title><![CDATA[Reply to Throw-Try-Catch Problem on Wed, 23 May 2012 10:58:39 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ich glaube der Threadersteller meint dies (was selbstverständlich auch geht, wäre doch total sinnlos anders.):</p>
</blockquote>
<p>Ja genau das mein ich. Bis jetzt wurde im Buch halt immer nach dem gearbeitet wie ich es oben gemacht hab (also zb ein integer geworfen etc..)</p>
<p>Dankö <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title="=)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214437</guid><dc:creator><![CDATA[H4rdstyl3]]></dc:creator><pubDate>Wed, 23 May 2012 10:58:39 GMT</pubDate></item><item><title><![CDATA[Reply to Throw-Try-Catch Problem on Wed, 23 May 2012 11:50:06 GMT]]></title><description><![CDATA[<p>Du darfst schmeißen was<sup>*</sup> und so viel du möchtest. Gerne auch mehrere verschiedene Integer. Exceptionsklassen und mit Einschränkungen Integer sind eben das, was am meisten Sinn macht.</p>
<p><sup>*</sup>: Ein paar kleine Einschränkungen gibt es natürlich schon. Faustregel: Was man per return aus einer Funktion zurück geben kann, das kann man auch werfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214468</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 23 May 2012 11:50:06 GMT</pubDate></item><item><title><![CDATA[Reply to Throw-Try-Catch Problem on Wed, 23 May 2012 11:54:21 GMT]]></title><description><![CDATA[<p>Könnt ihr mir ein mittelmäßig großes (oder eher kleines?) Open-Source-Projekt (nicht bloß eine Bibliothek) empfehlen, das einen guten Einsatz von Exception-Handling veranschaulicht? Ich bin gerade nach längerer Zeit der sturen Entwicklung in einem Code-Quality-Pass und wollte mich mal um solche Dinge kümmern, um die ich mich eigentlich schon eher hätte kümmern sollen.</p>
<p>Viele Grüße,<br />
deci</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2214470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214470</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 23 May 2012 11:54:21 GMT</pubDate></item><item><title><![CDATA[Reply to Throw-Try-Catch Problem on Wed, 23 May 2012 12:02:59 GMT]]></title><description><![CDATA[<p>geht ja auch:</p>
<pre><code class="language-cpp">...
catch(int &amp;e)
{
   if(e == 2)
      ...
   else if(e == 3)
      ...

   ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2214483</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2214483</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 23 May 2012 12:02:59 GMT</pubDate></item></channel></rss>