/*
P R O G R A M M B E S C H R E I B U N G
Demonstriert eine Anweisung, in der der Programmierer das Werfen 
eines Fehlerobjekts (mit throw) in die umgebende Methode veranlasst.
Dort (hier also main) muss dann das Fehlerobjekt mit try .. catch 
eingefangen werden oder wiederum an die umgebende 
Methode (mit throws) weitergeworfen werden. 
*/
public class MainException15{
	// Angabe von throws in main unnötig, da die hier in main 
	// durch try .. catch das Fehlerobjekt eingefangen wird.
	// public static void main(String[] args) throws Throwable {		
	public static void main(String[] args){
		double erg;
		try{
			erg=myTaschenrechner(5, 3, '/');
		}
		catch(Throwable t){
			System.out.println("Meine Fehlermeldung:");
			// mit getMessage() wird der String aus t geholt, der 
			// in der Methode myTaschenrechner im Fehlerobjekt
			// gesetzt wurde.
			System.out.println(t.getMessage());			
		}
	}		
	
	public static double myTaschenrechner(int a, int b, char rechenzeichen) throws Throwable{
		double erg;
		Throwable myt;
		
		if(rechenzeichen=='+'){
			erg=a+b;
		}
		else if(rechenzeichen=='-'){
			erg=a+b;
		}
		else{
			myt = new Throwable("Taschenrechner kann nur + und -");
			// auch möglich, falls die Zeile oberhalb fehlt:
			// throw new Throwable("Taschenrechner kann nur + und -");
			
			// mit throw wird ein Fehlerobjekt geworfen. 
			throw myt; 
		}
		return erg;
	}
}
