<?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 oder NULL?]]></title><description><![CDATA[<p>Guten Morgen!</p>
<p>Ich frage mich gerade, ob ich für eine Methode einen Zeiger mit 0 als Rückgabewert oder eine Exception werfen soll bei einem Fehlerfall. Angenommen sei z.B. folgende Deklaration:</p>
<pre><code class="language-cpp">Item* Foo::CreateItem( const std::string&amp; id );
</code></pre>
<p>Oder eben:</p>
<pre><code class="language-cpp">Item&amp; Foo::CreateItem( const std::string&amp; id );
</code></pre>
<p>Die Methode erstellt in Foo-Instanzen Item-Objekte, behält hier aber den Ownership (daher keine Fabrik). Es kann allerdings vorkommen, dass 'id' bereits belegt ist. In diesem Fall wird kein Item-Objekt erzeugt.</p>
<p>Würde man hier eher einen 0-Zeiger zurückgeben oder eine Exception werfen? Von der Semantik finde ich die zweite Variante hübscher, da eine Referenz m.M. nach den Ownership deutlich macht.</p>
<p>Gruß,<br />
Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/259651/exception-oder-null</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 18:09:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/259651.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Jan 2010 08:46:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exception oder NULL? on Tue, 26 Jan 2010 08:46:38 GMT]]></title><description><![CDATA[<p>Guten Morgen!</p>
<p>Ich frage mich gerade, ob ich für eine Methode einen Zeiger mit 0 als Rückgabewert oder eine Exception werfen soll bei einem Fehlerfall. Angenommen sei z.B. folgende Deklaration:</p>
<pre><code class="language-cpp">Item* Foo::CreateItem( const std::string&amp; id );
</code></pre>
<p>Oder eben:</p>
<pre><code class="language-cpp">Item&amp; Foo::CreateItem( const std::string&amp; id );
</code></pre>
<p>Die Methode erstellt in Foo-Instanzen Item-Objekte, behält hier aber den Ownership (daher keine Fabrik). Es kann allerdings vorkommen, dass 'id' bereits belegt ist. In diesem Fall wird kein Item-Objekt erzeugt.</p>
<p>Würde man hier eher einen 0-Zeiger zurückgeben oder eine Exception werfen? Von der Semantik finde ich die zweite Variante hübscher, da eine Referenz m.M. nach den Ownership deutlich macht.</p>
<p>Gruß,<br />
Stefan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844914</guid><dc:creator><![CDATA[StefanBo]]></dc:creator><pubDate>Tue, 26 Jan 2010 08:46:38 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder NULL? on Tue, 26 Jan 2010 08:52:37 GMT]]></title><description><![CDATA[<p>kommt drauf an. Wenn es schonmal vorkommen kann, dass die gleiche ID gewählt wird, würde ich über nen Null-Pointer (oder gar einem Pointer auf das selbe Objekt, das beim letzten mal zurückgegeben wurde) reagieren.<br />
Ist es aber eher die Ausnahme, die evtl. sogar in einem Log vermerkt werden soll, würde ich eine Exception werfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844917</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Tue, 26 Jan 2010 08:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder NULL? on Tue, 26 Jan 2010 08:59:00 GMT]]></title><description><![CDATA[<p>Es kann die gleiche ID gewählt werden, darf aber eigentlich nicht. <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="🙂"
    /> Hier mal ein konkretes Beispiel:</p>
<p>Es gibt eine Klasse &quot;AccountManager&quot; für Benutzerkonten. Um eins hinzuzufügen, bzw. genauer: zu erstellen, wird AccountManager::Create() gerufen, mit dem eindeutigen(!) Benutzernamen als Parameter.</p>
<p>Nun ist es so, dass es ein verwaltendes Interface gibt (ob das nun in einer Konsole, GUI oder sonstwie läuft, ist ja egal), in dem ein Benutzer einen neuen Account anlegen darf. Und der kann natürlich einen bereits vergebenen Benutzernamen wählen.</p>
<p>Lange Rede, kurzer Sinn: Es wäre also wirklich eine Ausnahme (nicht Exception ;)), weil das Erzeugen eines neuen Kontos nicht möglich ist. In einem Log würde das eher nicht vermerkt, die Anwendung muss aber auf alle Fälle darauf reagieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844920</guid><dc:creator><![CDATA[StefanBo]]></dc:creator><pubDate>Tue, 26 Jan 2010 08:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder NULL? on Tue, 26 Jan 2010 09:02:14 GMT]]></title><description><![CDATA[<p>Merke: Falsche Benutzereingaben sind nie Ausnahmen (Exceptions).</p>
<p>Ich würde da allerdings nicht drauf warten dass irgendeine create-Methode einen nullpointer liefert sondern gleich ne Abfrage starten &quot;war das was der user da eingetippt hat überhaupt sinnvoll?&quot; und dabei prüfen, obs zu dem Namen schon einen Account gibt. Wenn die Eingabe ok ist, dann kanns weitergehn und wen <em>dann</em> das create fehlschlägt ist wirklich irgendwas im Argen und du wirfst eine Eception.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844922</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 26 Jan 2010 09:02:14 GMT</pubDate></item><item><title><![CDATA[Reply to Exception oder NULL? on Tue, 26 Jan 2010 09:04:53 GMT]]></title><description><![CDATA[<p>Finde ich einen guten Ansatz. Danke euch beiden. <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>
<p>Dass falsche Benutzereingaben nie Exceptions sind, macht auch Sinn, Danke dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1844924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1844924</guid><dc:creator><![CDATA[StefanBo]]></dc:creator><pubDate>Tue, 26 Jan 2010 09:04:53 GMT</pubDate></item></channel></rss>