<?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[Sollte der Caller oder Callee loggen?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Designfrage. Ich habe recht oft folgende Codestruktur:</p>
<pre><code class="language-cpp">bool readFile(...) {

   // File parsing Code
   if(...) {
        // Dieser Block wird nur betreten, wenn die Datei korrupt ist
        // Hier loggen?
        return false;
   }

   if(..) {  // Anderen Fehler in Datei entdeckt
        // Hier loggen?
        return false;
   }

   return false;
}
</code></pre>
<p>Meine Frage steht im Grunde im Code. Ich parse z.B. eine Datei und es können viele Fehler auftreten. Im Fehlerfall kann ich nicht weiterarbeiten und gebe false zurück. Die Frage: Sollte ich VOR dem return false in der Funktion den Fehler loggen, oder sollte ich das Loggen dem Caller überlassen, sprich:</p>
<pre><code class="language-cpp">if(!readFile(...) {
   return -1;  // Fehlerfall. Brauche hier nicht loggen, da in readFile schon geloggt wurde
}

// oder so:
if(!readFile(...) {
  log(&quot;Corrupt file...&quot;); // Hier loggen. In readFile() dafür garnix loggen
  return -1;
}
</code></pre>
<p>Was ist besser?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289680/sollte-der-caller-oder-callee-loggen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 00:58:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289680.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jul 2011 21:21:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sollte der Caller oder Callee loggen? on Sun, 10 Jul 2011 21:21:06 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Designfrage. Ich habe recht oft folgende Codestruktur:</p>
<pre><code class="language-cpp">bool readFile(...) {

   // File parsing Code
   if(...) {
        // Dieser Block wird nur betreten, wenn die Datei korrupt ist
        // Hier loggen?
        return false;
   }

   if(..) {  // Anderen Fehler in Datei entdeckt
        // Hier loggen?
        return false;
   }

   return false;
}
</code></pre>
<p>Meine Frage steht im Grunde im Code. Ich parse z.B. eine Datei und es können viele Fehler auftreten. Im Fehlerfall kann ich nicht weiterarbeiten und gebe false zurück. Die Frage: Sollte ich VOR dem return false in der Funktion den Fehler loggen, oder sollte ich das Loggen dem Caller überlassen, sprich:</p>
<pre><code class="language-cpp">if(!readFile(...) {
   return -1;  // Fehlerfall. Brauche hier nicht loggen, da in readFile schon geloggt wurde
}

// oder so:
if(!readFile(...) {
  log(&quot;Corrupt file...&quot;); // Hier loggen. In readFile() dafür garnix loggen
  return -1;
}
</code></pre>
<p>Was ist besser?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091159</guid><dc:creator><![CDATA[Bernh22]]></dc:creator><pubDate>Sun, 10 Jul 2011 21:21:06 GMT</pubDate></item><item><title><![CDATA[Reply to Sollte der Caller oder Callee loggen? on Sun, 10 Jul 2011 21:23:12 GMT]]></title><description><![CDATA[<p>Ich würde es an deiner Stelle dem Caller überlassen. Und wenn du es in die Funktion einbaust, dann mit einem Makro umhüllt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091161</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 10 Jul 2011 21:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to Sollte der Caller oder Callee loggen? on Sun, 10 Jul 2011 21:27:06 GMT]]></title><description><![CDATA[<p>Ich würde in readFile loggen. Innerhalb kannst du dazuschreiben was genau schief gegangen ist. Ausserhalb nicht mehr, zumindest nicht mehr so einfach.<br />
Und innerhalb schreibst du den Code nur 1x, ausserhalb u.u. zigfach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091162</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 10 Jul 2011 21:27:06 GMT</pubDate></item><item><title><![CDATA[Reply to Sollte der Caller oder Callee loggen? on Sun, 10 Jul 2011 21:30:00 GMT]]></title><description><![CDATA[<p>Auf der einen Seite hast du in der Funktion mehr Informationen darüber, was kaputtgegangen ist, von daher kannst du dort natürlich auch detailliertere Informationen liefern (der Aufrufer sieht nur die Rückgabe false und kann feststellen, daß dort ein Fehler aufgetreten ist, die Funktion selber kann noch unterscheiden zwischen &quot;Datei korrupt&quot; und &quot;anderer Fehler in der Datei&quot;).<br />
Auf der anderen Seite weiß der Aufrufer am besten, wie die Fehler-Information ausgewertet werden kann (in einem Fall brauchst du nur einen Eintrag in einem Logfile, in einem anderen Fall soll gleich eine Meldung für den Nutzer aufploppen.<br />
-&gt; beide Möglichkeiten haben ihre Daseinsberechtigung.</p>
<p>(bei unserem Code gibt es mitunter auch eine Zwischenlösung: Die Funktion schreibt die Log-Informationen bzw. Fehlerbeschreibung in einen String-Parameter und der Aufrufer entscheidet dann, was er damit anfangen will)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091163</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 10 Jul 2011 21:30:00 GMT</pubDate></item><item><title><![CDATA[Reply to Sollte der Caller oder Callee loggen? on Sun, 10 Jul 2011 21:31:08 GMT]]></title><description><![CDATA[<p>Ich würde eine Exception werfen, die den Fehler genau beschreibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091164</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 10 Jul 2011 21:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to Sollte der Caller oder Callee loggen? on Mon, 11 Jul 2011 08:47:47 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Ich würde eine Exception werfen, die den Fehler genau beschreibt.</p>
</blockquote>
<p>Wenns nur um Fehler-Logging geht würde ich genauso verfahren: Bei Auftreten eines Fehlers die Beschreibung in die zu werfende Exception schreiben, beim endgültigen Fangen der Exception den Text ins Logfile schreiben. Sollte die Exception zwischendurch gefangen und weitergeworfen werden, den Fehlertext um Informationen ergänzen. So kann alles relevante ins Logfile kommen: der Werfer der Exception weiß, was genau schiefgelaufen ist, der Fänger kennt den Kontext und weiß, aus welcher Situation heraus die fehlschalgende Funktion gerufen wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2091261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2091261</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 11 Jul 2011 08:47:47 GMT</pubDate></item></channel></rss>