<?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[Erster Schritt beim Exception Handling]]></title><description><![CDATA[<p>Hallo !</p>
<p>Ich habe in einer C++-Dll (Win32) eine Funktion zum Suchen von SubStrings in Strings mit strstr eingebaut. Nun, wenn jetzt aber einer der Strings keinen Wert enthält, leer ist, stürzt die App ab mit der Windows Fehlermeldung<br />
Der Vorgang &quot;read&quot; konnte nich ausgeführt werden wobei eine Speicheradresse 0x000000 ist.</p>
<p>Sicher könnte man jetzt bevor man strstr aufruft ersteinmal den String testen aber ich wollte mich einmal mit Fehlerbehandlung in VC++ vetraut machen. Wie ist es möglich diesen Fehler abzufangen und somit einen Programmabsturz zu verhindern, OHNE (erstmal) die Strings vorher zu prüfen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/60018/erster-schritt-beim-exception-handling</link><generator>RSS for Node</generator><lastBuildDate>Wed, 03 Jun 2026 04:44:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/60018.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 Dec 2003 12:44:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erster Schritt beim Exception Handling on Thu, 01 Jan 2004 11:51:51 GMT]]></title><description><![CDATA[<p>Hallo !</p>
<p>Ich habe in einer C++-Dll (Win32) eine Funktion zum Suchen von SubStrings in Strings mit strstr eingebaut. Nun, wenn jetzt aber einer der Strings keinen Wert enthält, leer ist, stürzt die App ab mit der Windows Fehlermeldung<br />
Der Vorgang &quot;read&quot; konnte nich ausgeführt werden wobei eine Speicheradresse 0x000000 ist.</p>
<p>Sicher könnte man jetzt bevor man strstr aufruft ersteinmal den String testen aber ich wollte mich einmal mit Fehlerbehandlung in VC++ vetraut machen. Wie ist es möglich diesen Fehler abzufangen und somit einen Programmabsturz zu verhindern, OHNE (erstmal) die Strings vorher zu prüfen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/426350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/426350</guid><dc:creator><![CDATA[Michael__W.]]></dc:creator><pubDate>Thu, 01 Jan 2004 11:51:51 GMT</pubDate></item><item><title><![CDATA[Reply to Erster Schritt beim Exception Handling on Wed, 31 Dec 2003 16:36:26 GMT]]></title><description><![CDATA[<p>try/catch</p>
<p>MFC bietet die Klasse CString. Warum verwendest du dann strstr()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/426574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/426574</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Wed, 31 Dec 2003 16:36:26 GMT</pubDate></item><item><title><![CDATA[Reply to Erster Schritt beim Exception Handling on Thu, 01 Jan 2004 11:57:25 GMT]]></title><description><![CDATA[<p>Unix-Tom schrieb:</p>
<blockquote>
<p>try/catch</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> So viel wusste ich auch schon schon. Es ging aber um die Syntax.<br />
Habe ich die jetzt &quot;herausgefunden&quot;. Jetzt gibt es allerdings ein neues Problem. Die Funktion sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">long __stdcall FindStr (LPCSTR lpText, LPCSTR lpWord) {

	char *pDest;

	try 
	{
		pDest = strstr(lpText, lpWord);

	}
	catch (...) 
	{
		return -1;
	}

	return (pDest - lpText + 1);

}
</code></pre>
<p>Das funktioniert auch wunderbar in der DEBUG Version. Die App stürzt nicht mehr ab.<br />
Es kommt allerdings in der RELEASE Version erneut zum Absturz. Hat jemand eine Idee woran das leigen könnte ?</p>
<p>P.S.: Ich wünschen allen eine frohes, neues Jahr ! :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/426754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/426754</guid><dc:creator><![CDATA[Michael__W.]]></dc:creator><pubDate>Thu, 01 Jan 2004 11:57:25 GMT</pubDate></item><item><title><![CDATA[Reply to Erster Schritt beim Exception Handling on Thu, 01 Jan 2004 12:47:53 GMT]]></title><description><![CDATA[<p>Das liegt an der fehlenden Initialisierung von pDest. Außerdem halte ich try/ catch an dieser Stelle für etwas unglücklich. Wenn hier eine Exception fliegt, dann eine vom System generierte. Du kannst diese Exception mit dem VC zwar fangen, handelst Dir aber weitere Probleme ein, wenn andere Objecte ins Spiel kommen. Deren Destruktoren werden dann nicht aufgerufen!</p>
<pre><code class="language-cpp">long __stdcall FindStr (LPCSTR lpText, LPCSTR lpWord) { 

    char *pDest = NULL;

    __try  
    { 
        pDest = strstr(lpText, lpWord); 
    } 
    __except(EXCEPTION_EXECUTE_HANDLER)
    { 
        return -1; 
    } 

    return((pDest) ? (pDest - lpText + 1) : -1);

}
</code></pre>
<p>/Edit: Natürlich liegt es nicht an der fehlenden Initialisierung, sondern an der fehlenden Prüfung des Rückgabewertes von strstr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/426762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/426762</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Thu, 01 Jan 2004 12:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to Erster Schritt beim Exception Handling on Thu, 01 Jan 2004 13:01:18 GMT]]></title><description><![CDATA[<p>Ich habe gerade in meiner MSDN für __try geschaut. Ist ja recht komfortabel.<br />
Aus dem Text ging allerdings nicht hervor das ich mir, wenn ich den von dir verbesserte Code, (-King-), Probleme einhandel.</p>
<p>Heißt für mich jetzt, ich kann das so übernehmen, nicht wahr ?</p>
<p>Aller herzlichsten Dank auch. <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="🙂"
    /> <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/426766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/426766</guid><dc:creator><![CDATA[Michael__W.]]></dc:creator><pubDate>Thu, 01 Jan 2004 13:01:18 GMT</pubDate></item><item><title><![CDATA[Reply to Erster Schritt beim Exception Handling on Thu, 01 Jan 2004 13:09:37 GMT]]></title><description><![CDATA[<p>Michael__W. schrieb:</p>
<blockquote>
<p>Heißt für mich jetzt, ich kann das so übernehmen, nicht wahr ?</p>
</blockquote>
<p>Ich hoffe doch, ja. <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/426770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/426770</guid><dc:creator><![CDATA[-King-]]></dc:creator><pubDate>Thu, 01 Jan 2004 13:09:37 GMT</pubDate></item></channel></rss>