Erste Schritte Exeption

kamazoom

Mitglied
Hallo, ich habe Quellcode, und würde gern wissen warum der Compiler alle Exeptions bemängelt?
Ausserdem weiss ich nicht was Exeptions sind.

was bedeutet throw new Exeption()?
Was passiert bei catch Exeption e? was bedeutet das e?

hier der
Java:
public class Mathematiker {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try{
			try{
				int i=7%5;
				if ((i/(i%2))==1){
					throw new Exeption();
				}
				System.out.println("ich mag");
			}
			catch (Exeption e){
				System.out.println("Ich liebe");
				try{
					if((7%6/(7%6%2))==1){
						throw new Exeption();
					}
					System.out.println("nichts mehr, als");
				}
				catch(Exeption u){
					System.out.println("es,");
				}
			}
			System.out.println("wenn");
			try{
				int i=true&false ? 0:1;
				switch (i){
					case 0:
						System.out.println("eine Formel");
					case 1:System.out.println("ein programm");
					default:
						throw new Exeption();
				}
			}
			catch (ArithmeticsExeption e){
				System.out.println("abbricht.");
			}
            catch(Exeption e){
            	System.out.println("funktioniert.");
            }
			finally{
				int i = false && true ? 0:2;
				switch (i){
				case 1:
					System.out.println(";)");
					default:
						throw new Exeption();
						
				}
			}
		}
		catch (ArithmeticExeption e){
			System.out.println(":(");
			
		}
		catch (Exeption e){
			System.out.println("");
		}
		}

}
code
 

faustdonner

Mitglied
Ich erkläre dir das mal auch wenn es genug Tutorials gibt.

Also eine Exception ist eine Ausnahme. Diese wird z.B. ausgelöst wenn du z.B. durch 0 teilst. Dann löst wird eine ArithmeticException ausgelöst. Wenn du diesen Fehler nicht spätestens in der main()-Methode mit try...catch auffängst stürzt das Programm ab. Falls das Programm schon kompiliert war und vorm Benutzer liegt geht das Fenster einfach zu und er weiss von nichts.

Also jetzt erkläre ich nochmal try...catch(...finally).

In dem try {} Block schreibst du den Code rein in dem eine Exception ausgelöst werden könnte. Dann benutzt du ein oder mehrere catch(Exception e) Blöcke um die Ausnahmen abzufangen. Dabei kannst du gezielt nur ArithmeticException´s abfangen was auch empfehlenswerter wäre. Wenn du wie oben nur Exception eingibst werden alle Exceptions abgefangen und sollte noch eine andere Exception als ArithmeticException auftreten (und lässt du die Exception nicht mittels e.printStackTrace() ausgeben) ist es schwer nachzuvollziehen warum eine Exception ausgelöst wurde. Am Ende kannst du noch einen finally-Block hinten ranhängen. Dort gibst du Sachen ein die ausgeführt werden sollen egal ob eine Exception ausgelöst und abgefangen wurde oder nicht. z.B. einen FileReader schliessen.

Und throw ist eigentlich ganz simpel. Du löst selber eine Exception an genau dieser Stelle aus die dann genau wie alle anderen behandelt werden können. Du kannst auch deine eigenen Exceptions erstellen. Dafür erstellst du eine neue Klasse etwa so:

Java:
public class MeineException extends Exception {
    // Vllt. noch so ne serial-key nummer (schlägt eclipse immer vor)
}

Ich hoffe ich konnte helfen ;)

das e ist einfach das Exception Objekt also die Variable. Wie du bereits oben gesehen hast ist eine Exception nichts anderes als eine spezielle Klasse.
 

ARadauer

Top Contributor
Das ist immer so eine Sache... aber ich bin schon der Meinung, dass man in einem Forum nicht erklären muss was Exceptions sind...

1. Es gibt 100 super Beschreibungen im Netz
2. Wer danach fragt, ist einfach zu faul um selber was zu tun

Da gehts nicht ums Können, das ist einfach nur Faulheit...

Ganz schlimm ist im Herbst... ;-)
 

kaetzacoatl

Bekanntes Mitglied
Man ne ganz blöde Frage:
Was bringen Exceptions in
diesem code???:L???:L???:L
Du kannst auch gleich
Ausgaben machen und
musst nicht ständig was
werfen und dann wieder
fangen und dann nichts
damit machen.:rtfm:
 

kamazoom

Mitglied
Vielen dank, ich verstehe immer noch nicht warum es Exeption e heisst und e nirgend deklariert, erklärt, definiert wird. Weiss das programm das ?

Zum Thema Faulheit:ich habe 4 Bücher und schaue auch im Internet, manchmal gibt es aber einen Punkt da steckt man so voller Informationen, da weiss man nicht weiter. Faul finde ich dumme Kommentare zu machen und andere zu stören, die hilfsbereit sind, das ist nicht nur faul, das ist auch noch fies.


Liebe Grüße an alle die hier helfen und nicht klugsche.....
 
T

troll

Gast
Noch sinnvoller wäre nur noch gewesen, auf eine gute Seite ( Galileo Computing :: Java ist auch eine Insel - 6 Exceptions ) zu verlinken, anstatt ein OT-Diskussion zu starten.

@bone2: Merkst du was? Ich bin nicht angemeldet und verlange auch kein Danke. Von dir hingegen kommt wieder mal nur Müll.

drück nächste mal F5 bevor du antwortest ... -.-'
 
T

troll

Gast
Vielen dank, ich verstehe immer noch nicht warum es Exeption e heisst und e nirgend deklariert, erklärt, definiert wird. Weiss das programm das ?

Zum Thema Faulheit:ich habe 4 Bücher und schaue auch im Internet, manchmal gibt es aber einen Punkt da steckt man so voller Informationen, da weiss man nicht weiter. Faul finde ich dumme Kommentare zu machen und andere zu stören, die hilfsbereit sind, das ist nicht nur faul, das ist auch noch fies.


Liebe Grüße an alle die hier helfen und nicht klugsche.....

kannst du lesen ? es heißt Exception ... MIT C ! ... "Exeption" gibt es NICHT !

und zur info : "Exception e" bedeutet das eine neue block-variable "e" vom typ "Exception" deklariert wird ...

lies zu kapitel 6 noch zusätzlich die ersten 5 kapitel um die grundlagen zu verstehen ...

und zu deiner anmerkung bezüglich faulheit : da du es ja nicht mal hinbekommst ein wort richtig zu schreiben und dir das verlinkte mal richtig durchzulesen brauchst du hier nicht mit 4 büchern zu posen ... da diese ja scheinbar ziemlicher schrott sein müssen wenn du daraus nichts lernst ...
 

ARadauer

Top Contributor
Vielen dank, ich verstehe immer noch nicht warum es Exeption e heisst und e nirgend deklariert, erklärt, definiert wird. Weiss das programm das ?
das ist ein Sprachkonstrukt... wieso nirgend deklariert
catch (ArithmeticsExeption e){ hier wird es deklariert.. schaut ja eh fast so wie ein methoden parameter aus..

h habe 4 Bücher und schaue auch im Internet
warum nimmst du nicht 1 Buch? 5 quellen verwirren doch nur

Hat euch dieses Beispiel ein Lehrer geben?
 

kamazoom

Mitglied
Lass es doch einfach auf meine Beiträge zu antworten, lies sie nicht und nimm was für Deinen zu hohen Blutdruck, sonst kriegst Du einen Schlaganfall und kannst dann auch nicht mehr richtig lesen.

Und eins will ich Dir sagen, auch wenn man anonym miteinander kommuniziert, kann man sich geplegt äussern und korrekte bemerkungen machen.
 

kamazoom

Mitglied
Danke sehr, der Quellcode ist eine Beispielaufgabe, die ich versucht habe zu lösen. Ich habe mit pascal angefangen und habe mir das ohne Bücher angeeignet. Bei java bin ich so froh, dass es genügend Literatur gibt, dass ich mir gleich mehrere zugelegt habe. Im Prinzip ist programmieren relativ neu für mich und ohne Ausprobieren versteht man es nicht.

Ich denke , dass ich eins jetzt verstanden habe:throw new(Exception) bewirkt, dass alles was zu dem try-Block gehört abgebrochen wird. Richtig?

LG
 

kamazoom

Mitglied
Es gibt menschen die sich für sehr wichtig halten, es gibt menschen die viele Worte verlieren ohne etwas gesagt zu haben. Es gibt menschen, die könnten mal einfach was sein lassen. Penetrant nennt sich das, und das ist keine edle Eigenschaft.
 

kamazoom

Mitglied
Wenn ich zu einem try mehrere catches schreibe, wenn das geht, ist es dann immer exception e? oder muss man da wieder unterscheiden?


DANKE, die konstruktiven beiträge haben mir im Wald voller Bäume sehr geholfen, ich glaube ich verstehe es jetzt.
 

Templarthelast

Bekanntes Mitglied
Anstatt einfach jede Exception abzufangen kannst du z.B. nur FileNotFileException abfangen und dann dem Benutzer ausgeben: "Die Datei wurde nicht gefunden".
 

ARadauer

Top Contributor
man kann auch andere Exceptions fangen, die davon oder von Throwable erben... es muss auch nicht unbedingt e sein, man kann das nennen wie man will
 

faustdonner

Mitglied
nehmen wir mal an wir lösen irgendeine IOException aus (diese Klasse hat Unterklassen).

Java:
try {
    throw new FileNotFoundException();
} catch(NullPointerException e) {
    // wird wahrscheinlich nicht ausgelöst <.<
} catch(FileNotFoundException e) {
    // wird abgefangen
} catch(IOException e) {
    // würde abgefangen werden aber oben wurde ja schon abgefangen
} catch(Exception e) {
    // würde auch abgefangen werden. Fängt aber wirklich alle Exceptions ab
} finally {
    // wird immer ausgeführt
}

Verstanden?^^
 

Ähnliche Java Themen


Oben