Verhindern vom Speicherüberlauf mittels Exception
-
moin
ich hab mir nen Problem gebaut:
ein int array mit 5 feldern
ein CString array mit 5 feldernbeide lass ich in einer schleife füllen (10 felder)
entsprechend stürzt mein programm ab, das ist so gewollt.
nun will ich diese abstürze mittels exception abfangen so das mein programm zwar einen fehler schmeisst aber nicht einfach zu geht.
wie geht das???
mein code dazu:
try{ AfxMessageBox("test"); int aa=0; int * arr = new int[5]; CString *arr2 = new CString[5]; for(int i=0; i<10; i++){ arr[i]=aa; aa++; CString abc=""; abc.Format("%i",aa); arr2[i] = abc; CString ausge; ausge.Format("%i",arr[i]); AfxMessageBox(ausge+" "+arr2[i]); } AfxMessageBox("test1"); return ret; }catch (...){ CString ausg; ausg.Format("*** Unhandled Exception ***"); AfxMessageBox (ausg); return FALSE; }
gibt es also eine exception die solche fehler abfängt? die ich also statt der 3 punkte rein schreiben kann?
mfg LT
-
DU musst das Exception Model auf /EHcs stellen.
-
sorry was? bissi ausführlicher bitte
-
Tu das nicht. Verwende SEH Exceptions.
Das Abfangen von SEH Exceptions mit C++ ist nicht empfehlenswert.Tipp: Lass vernünftigerweise Dein Programm crashen.
Wenn so ein Mist in Deiner Software passiert ist:
1. Sowieso nicht scher dass es eine Exception gibt...
2. Der Zustand Deiner Software in einem Stadium in dem Du mit nichts mehr rechnen kanst, das noch korrekt funktioniert...
-
hmmm ok is aber net so toll ... ist halt doofe socket komunikation dran schuld die ich nicht beeinflussen kann ... ich versuche mit nem industriellen drucker zu komunizieren ... aber dieser drucker hat ne extrem "lange leitung"...
also zwischen den einzeln befehlsaufrufen musste ich schon 250 ms sleeps einbauen weil sonst der drucker die befehler nicht vernünftig verarbeitet und die komunikation abbricht und sich nicht wieder aufbauen lässt ...
is echt das schlimmste was ich in dieser hinsicht je gesehn hab ...
hab 4 weitere drucker von anderen firmen wo das gar kein problem ist nur der eine macht übelst probleme (ist natürlich der der überall in der industrie eingesetzt wird und ich somit irgendwie ne komunikationsschnittstelle schaffen muss die ordentlich funktioniert ... )naja muss ich noch n bissi rum probieren ....
werd gleich mal nen anderen thread aufmachen @ martin da kannste ja auch mal rein gucken vielleicht kannste mir da weiter helfen ...
dank dir
-
Verwendeste Du da eine LIB oder programmierst Du die Anbindung selber. Beim 2. Fall würde ich die Fehler beseitigen und beim ersten Fall den Herstellen um ein Update bitten.
-
also ich programmier die selber ...
nur hab ich halt hin und wieder seltsame effekte:
daten die 100 - 1000 ma richtig kommen, werden auf einmal nicht komplett übertragen...wenn ich die anfragen zu schnell hintereinader sende (anfragen die sonst zu 100 % funktionieren) sorgen dafür das die komunikation so heftig zusammen brechen das ich den drucker aus und wieder einschalten muss weil eine andere möglichkeit eine verbindung herzustellen nicht mehr funktionier..........
es ist echt etwas frustrierend ... eigentlich alles io und doch wenn ich anfragen schneller als 250 ms sende bricht die komunikation komplett zusammen
-
Und was hat das jetzt mit Deinem Programmierfehler zu tun?????