Hallo Java Freunde,
ich möchte gerne bevor ein Object Kreis erstellt wird testen ob ein ungültiger Radius eingegeben wird
Wenn ungültig soll eine Exception geworfen werden.
Momentan wird allerdings immer ein Object erzeugt.
Warum wird die Exception nicht geworfen und das Object erstellt obwohl in der while Schleife nur Radien > 0 zugelassen sind?
Java:
publicCircle(double radius,Point center){try{while(radius >0){
circlepoi =newArrayList<Point>();this.radius = radius;
circlepoi.add(center);draw();System.out.println("new Circle created");break;}}catch(IllegalArgumentException e){System.err.println("Radius muss größer als 0 sein ");}}
Das Ziel ist eine Exception zu werden wenn unsinnige Parameter (Radius <= 0) eingegeben werden und damit auch die Object Erstellung eines Kreises mit Radius z.B. 0 zu verhindern.
mit anderen Worten, das Ziel ist ein völlig anderer Code,
naja, man sieht ein wenig den Willen zur Programmierung, das zählt schonmal
Java:
publicCircle(double radius,Point center){if(radius <=0){thrownewIllegalArgumentException("Radius muss größer als 0 sein ");}
circlepoi =newArrayList<Point>();this.radius = radius;
circlepoi.add(center);draw();System.out.println("new Circle created");}
Das Ziel ist eine Exception zu werden wenn unsinnige Parameter (Radius <= 0) eingegeben werden und damit auch die Object Erstellung eines Kreises mit Radius z.B. 0 zu verhindern.
Mit catch fängst Du aber eine Ausnahme, statt eine zu werfen. Das ist sozusagen das genau Gegenteil von dem, was Du willst. Ansonsten hat SlateB mit seinem Beispiel hoffentlich alles geklärt.
Die Idee, bei einem falschen Paramter die Ausnahme IllegalArgumentException zu werfen ist übrigens sehr gut und genau richtig!
danke erstmal an alle ,
ich werfe jetzt mit throw die IllegalArgumentException wie es SlaterB beschrieben hat in der Circle Klasse.
Außerdem habe ich eine Testklasse(JUnit) erstellt.
Dort erzeuge (try) ich eine kreis mit ungültigem Radius und fange (catch) das mit dem Auslösen der IllegalArgumentException auf.
JUnit bestätigt den Erfolg (Success) des Tests, wenn die Exception geworfen wurde.
Java:
//Success if exception has been thrown because radius is 0 or negativetry{
circle3 =newCircle(-1, point1);fail("no exception");}catch(IllegalArgumentException e){System.out.println("Success");}