/*
P R O G R A M M B E S C H R E I B U N G
Demonstriert eine Anweisung, die mit try ... catch bearbeitet werden muss.
Es soll der Name eines Ordners (Verzeichnisses) erzeugt werden.
Laut Namenskonvention von Windows darf ein Verzeichnisname kein ? enthalten.
*/


package de;
public class MainException17 {
	public static void main(String[] args){
		Ordner v = new Ordner("Home?");
		try{
			v.checkOrdnerName();
		}
		catch(MyException_FalscherOrdnerName t){
			t.printFehlermeldung();			
		}
	}
}	

class Ordner{
	private String ordnerName; 

	public Ordner(String pname){
		setOrdnerName(pname);		
	};
  
	public void setOrdnerName(String pname){
		ordnerName = pname;
	}

	public String getOrdnerName(){
		return(ordnerName);
	}

	public void printAll(){
		System.out.println("Name des Ordners="+ordnerName);		
	}

	public boolean checkOrdnerName() throws MyException_FalscherOrdnerName{
		int zahl = (int)('?');
	  	if(ordnerName.indexOf(zahl)!=-1){
	  		// throw veranlaßt die Unterbrechung der "normalen" Ausführung
	  		// des Programms. Es wird der entsprechende Ausnahmehandler gesucht.
	  		throw new MyException_FalscherOrdnerName("Ordername "+ordnerName+" enthält ?");
	  	}
	  	return(true);
	}
}

class MyException_FalscherOrdnerName extends Throwable{
	private String zk;
	
	public MyException_FalscherOrdnerName(String s){
		zk=s;
	}

	public void printFehlermeldung(){
		System.out.println("Fehlermeldung: "+zk);		
	}
}







