<?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 selber werfen]]></title><description><![CDATA[<p>Ich habe eine Methode die eine Exception werfen soll, siehe Code unten.<br />
Dieser Code funktioniert soweit auch fast immer, nur manchmal tritt anstelle der von mir geworfenen Exception eine EAcccessViolation auf.<br />
Stellt sich mir jetzt die Frage, mache ich das mit dem Exception werfen richtig?</p>
<pre><code>#include &lt;stdexcept&gt;

class CBsp
{
private:
  char m_cData[100];

public:
  float  GetF32Bit( int iPos ) const
  { 
    if ( iPos &lt; 0 || iPos &gt; 96 ) throw out_of_range(&quot;Zugriff außerhalb des Speicherbereichs&quot;);
    return *(float*)(m_cData+iPos); 
  }
}
</code></pre>
<p>Und benutzt habe ich es dann folgendermaßen:</p>
<pre><code>...
try{ pBsp-&gt;GetF32Bit( x ) }
catch( out_of_range ){}
...
</code></pre>
<p>Kann auchsein, dass das wieder am SP2 liegt? Dann glaub ich muss ich das langsam wieder loswerden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/81034/exception-selber-werfen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 17:28:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/81034.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Jul 2004 12:37:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exception selber werfen on Tue, 27 Jul 2004 12:37:42 GMT]]></title><description><![CDATA[<p>Ich habe eine Methode die eine Exception werfen soll, siehe Code unten.<br />
Dieser Code funktioniert soweit auch fast immer, nur manchmal tritt anstelle der von mir geworfenen Exception eine EAcccessViolation auf.<br />
Stellt sich mir jetzt die Frage, mache ich das mit dem Exception werfen richtig?</p>
<pre><code>#include &lt;stdexcept&gt;

class CBsp
{
private:
  char m_cData[100];

public:
  float  GetF32Bit( int iPos ) const
  { 
    if ( iPos &lt; 0 || iPos &gt; 96 ) throw out_of_range(&quot;Zugriff außerhalb des Speicherbereichs&quot;);
    return *(float*)(m_cData+iPos); 
  }
}
</code></pre>
<p>Und benutzt habe ich es dann folgendermaßen:</p>
<pre><code>...
try{ pBsp-&gt;GetF32Bit( x ) }
catch( out_of_range ){}
...
</code></pre>
<p>Kann auchsein, dass das wieder am SP2 liegt? Dann glaub ich muss ich das langsam wieder loswerden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/569439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/569439</guid><dc:creator><![CDATA[Bigwill]]></dc:creator><pubDate>Tue, 27 Jul 2004 12:37:42 GMT</pubDate></item><item><title><![CDATA[Reply to Exception selber werfen on Fri, 30 Jul 2004 15:29:37 GMT]]></title><description><![CDATA[<p>Ich bin zwar nicht so gut in C++ aber vielleicht hilft dir das hier.<br />
Also ich würde das so schreiben, das try and catch (verwende BCB1):</p>
<p>try<br />
{pBsp-&gt;GetF32Bit( x );}<br />
catch (...)<br />
{Application-&gt;MessageBox (&quot;out_of_range&quot;, &quot;Fehler&quot;, 0+16);}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/571741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/571741</guid><dc:creator><![CDATA[mailer]]></dc:creator><pubDate>Fri, 30 Jul 2004 15:29:37 GMT</pubDate></item><item><title><![CDATA[Reply to Exception selber werfen on Fri, 30 Jul 2004 16:04:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>An dem throw catch liegt es wohl nicht, obwohl ich das Abfangen so schreiben würde:<br />
catch(out_of_range &amp;e)<br />
{<br />
}</p>
<p>Desweiteren würde ich iPos unsigned int machen, so dass der Test auf 0 wegfallen kann. Die AccessViolation kommt wohl wegen etwas anderen. Was soll überhaupt dieses gecaste von char* nach float* ? Mach doch gleich ein Array auf float.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/571760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/571760</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 30 Jul 2004 16:04:29 GMT</pubDate></item><item><title><![CDATA[Reply to Exception selber werfen on Fri, 30 Jul 2004 16:24:45 GMT]]></title><description><![CDATA[<p>@mailer<br />
Ja klar könnte ich das so schreiben aber ich will in dem Fall ja nur die von mir angestossene Exception abfangen und nicht alle möglichen Exceptions die eventl. an der Stelle mal auftreten. Dafür wird das zusammen mit dem Rest in ein weiteres try, catch gepackt.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/1387">@Braunstein</a><br />
ja ganz genau genommen müsste es sogar heißen</p>
<pre><code>catch(const out_of_range &amp;e)
</code></pre>
<p>Aber ich hab das ganze Gefummel mal weggelassen, weil mir nur wichtig war, dass der richtige Typ der Exception abgefangen wird. Das Objekt an sich brauch ich ja nicht, da ich nix mit mache, also nix ausgebe oder so.<br />
Vielleicht liegts aber genau an dem weglassen?!? Wer weiß.</p>
<p>Und das gecaste muss leider sein, allerdings mach ich das inzwischen mit reinterpret_cast. Ich hab nämlich ein char Array und muss da aber auch in allen anderen möglichen Datentypen ( float, double, short, long , etc.) drauf zugreifen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/571779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/571779</guid><dc:creator><![CDATA[Bigwill]]></dc:creator><pubDate>Fri, 30 Jul 2004 16:24:45 GMT</pubDate></item></channel></rss>