Konstruktor mit Fehlermeldung abbrechen



  • hallo

    wie der titel schon sagt, möchte ich einen konstruktor mit einer fehlermeldung abbrechen. ist das möglich? bisher benutze ich dafür eine exception, aber die bringt ja das ganze programm zum stehen. gibt es noch andre möglichkeiten, wenn ja, welche?

    greetz



  • Einen Konstruktor abbrechen kann man nur durch das Werfen einer Exception. Die wiederum bringt nur dann das ganze Programm zum stehen, wenn sie nicht gefangen wird. Die Frage ist: warum solltest du die Konstruktion deines Objekts abbrechen wollen? Eventuell solltest du die Bedingungen prüfen bevor du mit der Konstruktion überhaupt anfängst.
    Was ist denn das Problem, das du lösen willst mit der Klasse, und in welchem Kontext könnte es da zu der unvollständigen Konstruktion kommen? Vielleicht gibts Alternativen zu deinem Design



  • pumuckl schrieb:

    Vielleicht gibts Alternativen zu deinem Design

    Wie wär's mit einer Factory oder Factory-Methode?



  • hallo

    ich habe in der klasse 2 variablen, die zusammen 100 ergeben sollen. tun sie das nicht, funktioniert die ganze klasse nicht ( prozentrechnung mit ner gesamtzahl von über oder unter 100 ist eben blöd zu lösen 😉 ).
    ich denke, ich werde einfach eine überprüfung vorher einbaun.

    @tfa: ich weiß nicht, was eine factory ist oder was sie machen soll...

    trotzdem vielen dank euch beiden für die anstöße 🙂

    greetz



  • Warum sollte das "blöd zu lösen" sein. Wenn du zwei Werte (x, y) hast und die Summe beider Werte 100% beträgt, dann ergibt die Division eines der Werte durch die genannte Summe den jeweiligen prozentualen Anteil (x / (x+y) bzw. y / (x+y)) den jeweiligen prozentualen Anteil (je nach Genauigkeit).

    Dass nun die Summe beider Zahlen genau 100 ergibt, ist nun lediglich ein Sonderfall.

    Grüße... Heiko



  • Zum Thema Fabrikmethode: http://de.wikipedia.org/wiki/Fabrikmethode

    ABer wenn du weißt, dass die beiden Zahlen in Summe 100 ergeben, wieso müssen denn beide übergeben bzw. überhaupt abgespeichert werden. Berechne einfach die zweite aus der ersten.



  • hallo.

    ich habe das problem jetzt anders gelöst.
    was ich nämlich (dummerweise) nicht erwähnt habe ist, dass der benutzer beide zahlen eingibt. habe jetzt aber keine eingabe ermöglicht, sondern ein "verschieben" (d.h., der user drückt auf nen button und der eine wert wird erhöht, der andere erniedrigt) programmiert.

    vielen dank nochmal 🙂



  • selbst wenn der User die zwei Werte eingibt, solltest du grundsätzlich eins beachten:
    Eingaben vom User sind generell zu überprüfen, bevor man damit arbeitet, insbesondere bevor man sie an irgendwelche Funktionen oder Konstruktoren übergibt.
    In deinem Fall hätte ich ein Eingabefeld für einen der beiden Werte angelegt und daneben den daraus berechneten zweiten Wert einfach angezeigt. Der User gibt dann einen Wert ein und der zweite wird automatisch daraus berechnet. (Du musst dann immernoch überprüfen, ob der eingegebene Wert zwischen 0 und 100 liegt).
    Bei der Klasse die du erwähnt hast würde ich dem Konstruktor nur den einen Wert übergeben, schließlich ist der zweite ohne weiteres daraus berechenbar. Dem Ctor beide Werte zu übergeben wäre überflüssige Information und führt nur zu Problemen.


Anmelden zum Antworten