<?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[Was tun bei falschen Parametern?]]></title><description><![CDATA[<p>Hallo!</p>
<p>ich habe eine kleine Frage zu Parametern. Ich habe eine Funktion foo:<br />
VECTOR foo(float f); Der Parameter f darf nur im Interval [0,1] liegen, sonst kann ich einfach in foo nichts sinnvolles berechnen.</p>
<p>Ich bin mir nicht ganz sicher, wie ich am besten in solchen Situationen vorgehen soll? Ist es die Aufgabe des Aufrufers dafür zu sorgen, dass f immer im gültigen Intervall liegt? Oder soll ich das in foo handhaben? Und falls ja: wie? Soll ich einen Nullvektor zurückliefern? Oder ein assert() zu Beginn von foo() einbauen oder eine Exception werfen, wenn f außerhalb [0,1] liegt?</p>
<p>Wie entscheide ich sowas generell?</p>
<p>Danke! <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/topic/242116/was-tun-bei-falschen-parametern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 03:59:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242116.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 May 2009 15:11:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was tun bei falschen Parametern? on Sat, 30 May 2009 15:11:40 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>ich habe eine kleine Frage zu Parametern. Ich habe eine Funktion foo:<br />
VECTOR foo(float f); Der Parameter f darf nur im Interval [0,1] liegen, sonst kann ich einfach in foo nichts sinnvolles berechnen.</p>
<p>Ich bin mir nicht ganz sicher, wie ich am besten in solchen Situationen vorgehen soll? Ist es die Aufgabe des Aufrufers dafür zu sorgen, dass f immer im gültigen Intervall liegt? Oder soll ich das in foo handhaben? Und falls ja: wie? Soll ich einen Nullvektor zurückliefern? Oder ein assert() zu Beginn von foo() einbauen oder eine Exception werfen, wenn f außerhalb [0,1] liegt?</p>
<p>Wie entscheide ich sowas generell?</p>
<p>Danke! <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/1718316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718316</guid><dc:creator><![CDATA[paraFrage]]></dc:creator><pubDate>Sat, 30 May 2009 15:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun bei falschen Parametern? on Sat, 30 May 2009 15:18:11 GMT]]></title><description><![CDATA[<p>Ich würde sagen, dass du das dem Aufrufer überlässt, dass er richtige Werte übergibt und in der Funktion ein assert einbauen und bei einem falschen Wert eine Exception werfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718318</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 30 May 2009 15:18:11 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun bei falschen Parametern? on Sat, 30 May 2009 15:19:13 GMT]]></title><description><![CDATA[<p>paraFrage schrieb:</p>
<blockquote>
<p>Ist es die Aufgabe des Aufrufers dafür zu sorgen, dass f immer im gültigen Intervall liegt?</p>
</blockquote>
<p>Ja.</p>
<blockquote>
<p>Oder soll ich das in foo handhaben?</p>
</blockquote>
<p>Wie du magst.</p>
<blockquote>
<p>Und falls ja: wie? Soll ich einen Nullvektor zurückliefern? Oder ein assert() zu Beginn von foo() einbauen oder eine Exception werfen, wenn f außerhalb [0,1] liegt?</p>
</blockquote>
<p>Wie Du magst.<br />
Ich würde assert nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718321</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 30 May 2009 15:19:13 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun bei falschen Parametern? on Sat, 30 May 2009 15:23:53 GMT]]></title><description><![CDATA[<p>Ein assert liefert ja nur im Debug Modus eine Exception, wenn ich das richtig verstehe. Im Release Modus läuft die Anwendung dann in ihr Verderben.<br />
Ist ein assert() also im Grunde nur ein Hilfsmittel um Fehler während des Entwicklungsprozesses zu finden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718322</guid><dc:creator><![CDATA[paraFrage]]></dc:creator><pubDate>Sat, 30 May 2009 15:23:53 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun bei falschen Parametern? on Sat, 30 May 2009 15:30:05 GMT]]></title><description><![CDATA[<p>paraFrage schrieb:</p>
<blockquote>
<p>Ein assert liefert ja nur im Debug Modus eine Exception, wenn ich das richtig verstehe. Im Release Modus läuft die Anwendung dann in ihr Verderben.<br />
Ist ein assert() also im Grunde nur ein Hilfsmittel um Fehler während des Entwicklungsprozesses zu finden?</p>
</blockquote>
<p>ja.<br />
das assert in deiner funktion hilft dem aufrufer, der keine falschen zahlen reintun darf, eventuell durchschlüpfende fehlerchen doch sofort zu finden.</p>
<p>deine funktion darf bei falschen parametern im releasemodus machen, was sie mag. insbesondere darfst du den rechner abstürzen lassen und das betriebssystem löschen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718324</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 30 May 2009 15:30:05 GMT</pubDate></item><item><title><![CDATA[Reply to Was tun bei falschen Parametern? on Sat, 30 May 2009 22:11:11 GMT]]></title><description><![CDATA[<p>Du darfst im Prinzip machen was du willst.<br />
Was du dir aussuchst definiert dann halt dein Interface, und du solltest es nichtmehr ändern.</p>
<p>Doof ist z.B. wenn du heute beschliesst eine Exception zu werfen, und in der nächsten Version dann bloss ein assert() dortstehen hast, da du damit das Verhalten der Funktion verändert hast. Programme die mit der alten Version korrekt funktionieren könnten mit der neuen dann Probleme haben.</p>
<p>Sogesehen ist assert() gut, da du damit a) dem Programmierer hilfst Fehler zu finden aber b) es ihm trotzdem unmöglich machst diese Fehler einfach zu ignorieren, da im Release-Build dann schlimme Dinge passieren.</p>
<p>Eine andere Möglichkeit wäre noch die Werte einfach zu clampen, also alles &lt; 0 als 0 zu behandel und alles &gt; 1 als 1.</p>
<p>Was Sinn macht ist wohl von Fall zu Fall verschieden. Bzw. ist es natürlich auch &quot;Geschmackssache&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1718469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1718469</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 30 May 2009 22:11:11 GMT</pubDate></item></channel></rss>