Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
---- Logik (http://www.informatikerboard.de/board/board.php?boardid=16)
----- Exceptions (http://www.informatikerboard.de/board/thread.php?threadid=2075)


Geschrieben von Erstsemestler am 16.01.2015 um 20:04:

  Exceptions

Meine Frage:
Eine weitere Frage zu Exceptions :-)

Es gibt ja die Schlüsselwört try und catch. Wenn ich den bei catch den Ausdruck Exception e habe, was bedeutet dieser genau?

Meine Ideen:
Besten Dank :-)



Geschrieben von eulerscheZahl am 16.01.2015 um 20:08:

 

Exception ist ein Datentyp und e der Name der Variable. Ähnlich wie for (int i
Über e kommst du dann an nähere Informationen, z.B. eine Beschreibung mit e.toString()



Geschrieben von Erstsemestler am 16.01.2015 um 20:15:

 

Dankeschön :-)



Geschrieben von Erstsemestler am 16.01.2015 um 20:39:

 

Ich muss noch mal an dieses Thema anknüpfen, da irgendwo noch ein Fehler im Code ist :-) Es soll eine Exception geworfen werden, sobald die Gleichung (result in meinem Fall) 0 ergibt.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
public class Polstelle
{
	public static void main (String[]args)
	{
		ergebnis(1.0F);
	}

	public static void ergebnis (float x)
	{
		float result=0;
		try
		{
			result = ((x*x*x)-(5*(x*x))-x+5);
			System.out.println(result);
		}
		catch (Exception e)
		{
			System.out.println("Falscher Wert");
		}
		
	}
}



Allerdings bekomme ich immer das Ergebnis und nicht die Fehlermeldung böse (Wert wo 0 ergibt wäre zum Beispiel die 1).



Geschrieben von eulerscheZahl am 16.01.2015 um 20:52:

 

In der Funktion ergebnis musst du die Ausnahme ja erst mal werfen.
code:
1:
2:
3:
4:
5:
6:
7:
public static float ergebnis(float x) throws IllegalAccessException {
	float result = x * x * x - 5 * x * x - x + 5;
	if (result == 0) {
		throw new IllegalAccessException("Nenner ist 0");
	}
	return result;
}


gefangen wird sie dann wo anders:
code:
1:
2:
3:
4:
5:
6:
7:
public static void main(String[] args) {
	try {
		ergebnis(-1);
	} catch (IllegalAccessException e) {
		e.printStackTrace();
	}
}

Und die anderen Nullstellen sind -1 und 5 smile



Geschrieben von Erstsemestler am 16.01.2015 um 23:29:

 

Danke Dir :-) Daumen hoch Daumen hoch



Geschrieben von Erstsemester am 23.01.2015 um 08:44:

 

Sehe ich das richtig, dass die Exceptions immer aus dem "Dreierblock" bestehen --> sprich throw s Exception ; throw new Exception () und try-catch- Anweisung?



Geschrieben von eulerscheZahl am 23.01.2015 um 08:51:

 

Das try-catch kannst du noch um ein finally erweitern.



Geschrieben von Erstsemester am 23.01.2015 um 09:12:

 

Ist finally das Gleiche wie final, sprich, dass eine Instanzvariable nach ihrer Initialisierung nicht mehr verändert werden kann (was ja im catch - Block logisch wäre?)



Geschrieben von eulerscheZahl am 23.01.2015 um 09:17:

 

Nein. Finally wird nach einem try-catch immer angearbeitet. Auch wenn du im catch eine neue Exception wirfst und somit die Methode verlässt. Die Ausführung ist auch unanhängig davon, ob eine Exception auftrat und ob sie gefangen wurde oder nicht.

Mehr hier: javainsel



Geschrieben von Erstsemester am 23.01.2015 um 09:21:

 

Achso, dankeschön :-)



Geschrieben von Erstsemester am 26.01.2015 um 19:12:

 

Hey Leute,

warum akzeptiert mir der Compiler in Zeile 24 mein nenner(-1) im try - Block nicht? böse böse böse

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
class Exceptions
{
	int zaehler = 5;
	int nenner = 0; 
	public void nuller (int nenner) throws IllegalAccessException
	{
		int result = zaehler/nenner;		
		if (nenner==0)
		{
			throw new IllegalAccessException("Nenner ist gleich 0");
		}
		System.out.println(result);
	}

}


public class Methodentest
{
	public static void main (String[]args)
	{
		try 
		{
			nenner(-1);
		}
		catch (Exception e)
		{
			System.out.println(e.toString());	
		}
	}
	
}



Vielen Dank für Eure Antworten :-)



Geschrieben von eulerscheZahl am 26.01.2015 um 19:51:

 

Ist nenner denn eine Funktion?



Geschrieben von Erstsemester am 26.01.2015 um 19:54:

 

Sorry, da gehört nuller(-1) hin.



Geschrieben von eulerscheZahl am 26.01.2015 um 19:55:

 

Dann musst du entweder die Funktion static machen und den Klassennamen angeben, oder über eine Instanz darauf zugreifen.


Forensoftware: Burning Board, entwickelt von WoltLab GmbH