# Exception Übung für Einsteiger



## EnHancEd[] (14. Feb 2012)

Sers,

mal ne kleine Übung für Einsteiger zum Thema Exceptions bzw. selbst welche Erstellen.

Schreiben sie eine Exception die verhindert, dass bei Person zwei beim Methodenaufruf p2.getAge() verhindert, dass das Alter ausgegeben wird:

Soweit der Code:


```
public class Person {
	
	private String name;
	private int age;
	private String vorname;
	
	public Person(String name, int age, String vorname){
		this.name=name;
		this.age=age;
		this.vorname= vorname;
		
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getVorname() {
		return vorname;
	}

	public void setVorname(String vorname) {
		this.vorname = vorname;
	}
	
	

}
```


```
public class MainClass {
	
	public static void main(String[] args){
		
		Person p1= new Person("Beck2", 19, "Patrick2");
		Person p2 = new Person("hi", 18, "s");
		
		System.out.println(p1.getAge());
        System.out.println(p2.getAge());

	}

}
```

Nennt sie meinet wegen NoAgeAllowedException.

Greetz & viel Spaß


----------



## HimBromBeere (14. Feb 2012)

Es ist zwar nett von dir, einen Beitrag für die allgemeine Bildung beizutragen, aber das solltest du erstens in einer grammatikalisch nicht ganz so unglücklichen Form tun und zweitens mit etwas mehr praktischem Inhalt. Den Sinn, weshalb man bei einer Person das Alter ausgeben können soll und bei einer anderen nicht., will sich mir einfach nicht offenbaren.


----------



## truesoul (14. Feb 2012)

EnHancEd[];864579 hat gesagt.:
			
		

> Sers,
> 
> mal ne kleine Übung für Einsteiger zum Thema Exceptions bzw. selbst welche Erstellen.
> 
> Schreiben sie eine Exception die verhindert, dass bei Person zwei beim Methodenaufruf p2.getAge() verhindert, dass das Alter ausgegeben wird:



Wie bitte?


----------



## EnHancEd[] (14. Feb 2012)

Es geht ja erstmal drum selbst zu testen ob man die Implementierung einer eigenen Exception in Java beherrscht.

Meinetwegen weil sie nichtmehr lebt und somit auch kein aktuelles Alter hat, das ist ja schnuppe.
Die Implementierung ist wichtig.


----------



## EnHancEd[] (14. Feb 2012)

truesoul hat gesagt.:


> Wie bitte?



Wo liegt das Problem? testen & Rückmeldung geben.


----------



## faetzminator (14. Feb 2012)

Also die Aufgabenstellung ist schwammig. Es fällt mir nur ein Weg ein, diese Aufgabe zu lösen. Aber wär das dann nicht eher ein Thema für Inner Classes?

```
Person p2 =  new Person("hi", 18, "s") {
    @Override
    public int getAge() {
        throw new NoAgeAllowedException();
    }
};
```


----------



## EnHancEd[] (14. Feb 2012)

Tut mir leid wenn das keine genau gestellte Aufgabe ist, geht mir wie gesagt nur drum dass sich manche Leute die den Thread lesen Gedanken machen und nicht denken, nur weil sie auf throws auto einfügen in Eclipse gehen können, Sie das Thema Exceptions verstehen.


----------



## Landei (14. Feb 2012)

Kommt darauf an wie man "zweite Person" hier definiert. Ist genau die im obigen Codestückchen gemeint, dann...


```
public int getAge() {
        if (name.equals("hi")) {
           throw new UnsupportedOperationException("Sag ich nicht!"); 
        }
        return age;
    }
```

Ist das zweite instantiierte Objekt der Klasse (unabhängig von den Werten) gemeint, könnte man das über einen statischen Counter lösen. Also eine unklare Aufgabenstellung...


----------



## EnHancEd[] (14. Feb 2012)

Edit: ja das stimmt


----------



## Gast2 (14. Feb 2012)

> Da gibt er garnichts mehr von Person 2 aus, soll nur das Alter nicht.


Natürlich kannst du da noch nach getName() oder getVorname() fragen.


----------



## EnHancEd[] (14. Feb 2012)

EikeB hat gesagt.:


> Natürlich kannst du da noch nach getName() oder getVorname() fragen.



Ja hatte mich verlesen, mache grade noch was nebenher mein Fehler 

Edit: Schaue grade ob das mit der inneren Klasse auch besser geht, ne if-Abfrage scheint aber der einfachste Weg zu sein. Ich hatte mir eine neue Exception Klasse erstellt in der ich einfach festlege, dass Person zwei kein Alter haben darf. Hat das jemand noch so?


----------



## truesoul (14. Feb 2012)

EnHancEd[];864586 hat gesagt.:
			
		

> Wo liegt das Problem? testen & Rückmeldung geben.



Mein "wie bitte?" bezieht sich darauf, dass die Aufgabe ein wenig schwammig gestellt ist, und zudem leider ein wenig grammatikalisch falsch. 
Naja Landei und faetzminator haben ja schon Beispiele gezeigt.


----------



## faetzminator (14. Feb 2012)

EnHancEd[];864599 hat gesagt.:
			
		

> Ich hatte mir eine neue Exception Klasse erstellt in der ich einfach festlege, dass Person zwei kein Alter haben darf. Hat das jemand noch so?



Hä, was? Die Exception wird erstellt und überprüft selbst über irgendwelche Parameter, ob sie gethrowt wird oder nicht?


----------



## EnHancEd[] (14. Feb 2012)

Ja wollte mal probieren ob das auch geht, bis jetzt ohne erfolg


----------



## Sonecc (14. Feb 2012)

Ich werde das Gefühl nicht los, dass hier hinterrücks eine Schulaufgabe gelöst werden soll...


----------

