[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 server

    es 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 darf

    also 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 ist

    das 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 einlesen

    wie 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.


Anmelden zum Antworten