[PROBLEM] Array Index außerhalb des Arraybereichs
-
hallo ich habe eine frage zum index out of bound eines arrays.
ich lese viele csv daten in einer for-schleife ein
und speicher diese auf einem sql serveres gibt eine bestimmte anzahl spalten in der tabelle die sich nicht verändern darf
jedoch sind manche dateien fehlerhat und haben mehr spalten als die tabelle besitzten darfalso z.b. gibt es 21 spalten namen ala ID, Date, Name, ... etc.
und plötzlich taucht ein feld auf mit 24 spalten oder die komplett leer istdas verursacht einen array overflow
ich muss aber dem server sagen
insert into tabelleA (ID,Date,Name,...) VALUES ('1','2012','Test',....)das programm stürzt trotz try and catch ab
soll es aber nicht
es soll die fehlerhafte zeile einfach in eine andere tabelle speichern und
die nächsten zeilen wieder ganz normal weiter einlesenwie schaffe ich es das ein programm nicht abstürzt sondern die fehlerhafte zeile überspringt
ich hab mal einen vereinfachten code hier als beispiel an dem ich den indexfehler versuche zu verhindern bis jetzt hat aber leider noch nichts geklappt
int testarray[5] try { for (int i =0; i<6; i++ { if(i=3) { testarray[i] = 999999999999999 } else { testarray[i] = i } } catch (ex) { cout << ex.message <<endl; }
kann ich das einlesen der zeilen einfach in eine funktion stecken und diese dann im catchbereich aufrufen damit es weitergeht?
ich glaube aber eher das sowas schlecht wäre
-
Aus deinem gezeigten Code schliesse ich, dass es sich um C++ und nicht C++/CLI handelt, korrekt?
Bei C++ ist der Zugriff ausserhalb der Array Grenzen UB (undefined behaviour) - es gibt keine Exception.
Die Lösung liegt wohl darin, dass Du vor dem Zugriff überprüfst, ob deine Indices sich innerhalb der erlaubten Grenzen befinden.
-
theta schrieb:
Aus deinem gezeigten Code schliesse ich, dass es sich um C++ und nicht C++/CLI handelt, korrekt?
Bei C++ ist der Zugriff ausserhalb der Array Grenzen UB (undefined behaviour) - es gibt keine Exception.
Die Lösung liegt wohl darin, dass Du vor dem Zugriff überprüfst, ob deine Indices sich innerhalb der erlaubten Grenzen befinden.
ja C++
hmm das heisst es gibt keine andere möglichkeit um einen absturz zu verhindern ausser mit if zu prüfen ob die variable mit der ich die daten einlese NULL ist?
hab gehofft es gibt vielleicht etwas anderes mit dem man das erkennen kann
aber danke
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ (auch C++0x und C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.