Wie mit Fehler umgehen?



  • Ich habe eine Klasse die genau 16 ints in einem Array enthält.
    Im Konstruktor möchte ich ein Array übergeben können, aus welchem dann die Werte kopiert werden.

    Was mache ich nun wenn ein Array mit ungleich 16 Werten übergeben wird?

    Exception werfen?
    Und wenn ja wer soll das wann auffangen?

    Vom Programm wünsche ich mir eigentlich dass es dem Benutzer eine Warnung ausgibt und statt dem falschen Array ein von mir festgelegtes Standardarray benutzt.

    Da es sich am Schluss aber um eine Graphikausgabe handelt nützt eine Ausgabe in der Konsole herzlich wenig, falls das programm im Vollbildmodus gestartet wird, bzw wer schaut schon auf die Konsole wenn er hübsche Bilder vor sich hat ?!

    Da der Teil mit dieser Klasse aber an sich nichts mit Graphik zu tun hat, kann ich auch nicht einfach eine Meldung am Bildschirm ausgeben.

    Oder anders ausgedrückt: wie mache ich dem Nutzer begreiflich dass irgendetwas schief gelaufen ist, ohne dass gleich das gesamte Programm abbricht (natürlich sind falsche Ausgaben auch nicht das wahre, aber erstmal besser als schwarzer Bildschirm oder?)



  • shisha schrieb:

    Ich habe eine Klasse die genau 16 ints in einem Array enthält.
    Im Konstruktor möchte ich ein Array übergeben können, aus welchem dann die Werte kopiert werden.

    Was mache ich nun wenn ein Array mit ungleich 16 Werten übergeben wird?

    Was meinst du mit Array übergeben?

    a) Oldscool C-Array -> du erwartest 16 Werte, liest auch 16 Werte, indem du einfach mit einem Pointer in einer Schleife durchmarschierst und kriegst nach C-Manier einen Zugriffsfehler, wenn weniger als 16 Elemente drin sind und deinem System grade danach ist (sonst wird einfach Müll aus dem Speicher hinter dem Array gelesen)
    b) std::vector<int> -> du rennst mit einem Iterator drüber und wirfst eine Exception, wenn du weniger als 16 Werte bekommst. Das muss dokumentiert werden und der Aufrufer muss sich drum kümmern, dass der Konstruktor auch mal schieflaufen kann.
    c) boost::array<int, 16> -> du kannst nicht anders als ein array mit 16 ints übergeben, alles andere kompiliert nicht.

    Vom Programm wünsche ich mir eigentlich dass es dem Benutzer eine Warnung ausgibt und statt dem falschen Array ein von mir festgelegtes Standardarray benutzt.

    Wo kommt das Array her? Benutzereingabe? Datei? Berechnet?

    Oder anders ausgedrückt: wie mache ich dem Nutzer begreiflich dass irgendetwas schief gelaufen ist, ohne dass gleich das gesamte Programm abbricht (natürlich sind falsche Ausgaben auch nicht das wahre, aber erstmal besser als schwarzer Bildschirm oder?)

    Mit einer Message-box die den Fehler angibt.


Anmelden zum Antworten