Exception Handeling funktioniert nicht

chell

Mitglied
Hallo,

nachdem mir eben meine Frage netterweise so ausführlich erklärt wurde, stelle ich an dieser Stelle einfach mal die nächste. Folgendes Szenario:

Ich habe mir zur Übung eine Rechenklasse definiert. Innerhalb dieser Klasse gibt es eine Methode für die Division. Diese funktioniert auch. Nun wollte ich versuchen das Ergebnis dieser Methode auszugeben und einen Fehler abzufangen:

Code:
 public class Programm {
 
 	public static void main(String[] args) {
 		Rechner meinRechner = new Rechner();
 
 		//System.out.println(meinRechner.flaecheKreis(2.5));
 		try 
 		{
 		System.out.println(meinRechner.dividieren(27, 0)); 	
 			
 			
 			
 		}
 		catch(Exception e) 
 		{
 			System.out.println("Es ist ein Fehler aufgetreten");
 			
 			
 		}
 		
 	}
 }

Ich erhalte aber nur die Ausgabe "Infinity", welche ich nie definiert habe.

Mfg

chell
 
Hallo!

Wie ist denn deine dividieren methode implementiert?
Bei mir wirft
Code:
System.out.println(1 / 0);

eine:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at de.tutorials.Foo.main(Foo.java:21)

Gruß Tom
 
Hallo,

hier die Implementierung der Methode:


Code:
 public double dividieren(double a, double b) {
 
 		return a / b;
 	}
 
Hallo!

Okay, dass ist ein Spezialfall
Code:
System.out.println(1.0 / 0.0);

Wegen der ungenauen Zahlendarstellung im Computer wird 0.0 nicht wirklich als 0.0 sondern wohlmöglich als 0.0000000000000000000000000000000000231317312738 gesehen. Wegen diesen Ungenauigkeiten sind für diese Rechnungen die Spezialwerte wie Infity und NaN definiert.
Mittels Double.isInfinity(double d) bzw. Double.isNaN(double d) kannst du darauf püfen...

Mit int's Funktioniert's wie gehabt.

Gruß Tom
 
Ich habe die Lösung gefunden. Und zwar habe ich in der Methode was geändert:


Code:
 public double dividieren(double a, double b) throws Exception {
 		if (b == 0) {
 			throw new Exception();
 		}
 		return a / b;
 	}

und dann im Programm:

Code:
 public class Programm {
 
 	public static void main(String[] args) {
 		Rechner meinRechner = new Rechner();
 
 		//System.out.println(meinRechner.flaecheKreis(2.5));
 		try 
 		{
 		System.out.println(meinRechner.dividieren(27, 0)); 	
 			
 			
 			
 		}
 		catch(Exception e) 
 		{
 			System.out.println("Es ist ein Fehler aufgetreten");
 			
 			
 		}
 		
 	}
 
Hallo!

Wann immer man Exceptions werfen muss sollte man sich bevor man selbst eine eigene Exception Hierarchie Aufbaut davon überzeugen, dass es keine "passende" Exceptions bereits im JDK gibt...

Ich denke in deinem Fall würde sich doch die java.lang.ArithmeticException: / by zero gut machen, oder? ;-)

Gruß Tom
 
Zurück