Newbee vermasselt Prüfung, nun Fehlersuche step-by-step

Oki doki. Das hört sich, wenn ichs richtig verstanden habe, nach einem Try-Catch Block an.

Try-Catch is klar?

Wenn ja, pack einfach die Zuweisung oder den Zugriff auf das Array in den Try Block, und die Behandlung, was du im Gegenfall machen willst, also wenn ein Fehler auftritt, in den Catch-Block.

Gruss
TOM
 
Hi zusammen !

Also, sorry, aber ich glaub mein Browser spinnt, der hat mir die Seite heute auf nem anderen Rechner ganz anders dargestellt. Wollte nix posten, was eh schon gelöst ist und hier die Newbies verwirren. ;)

Werd mal meinen Browser-Cache löschen.

Glückwunsch übrigens, die nächste Prüfung klappt dann schon !

Krösi
 
TommyMo hat gesagt.:
Eine Verfeinerung wäre dann noch, damit du dir die ständige Abfragerei ersparst, dass du die if-Abfrage in die Methoden reinnimmst. Was mein ich damit schon wieder? :) Ganz einfach, so wies jetzt gemacht wird, mußt du nach jeden Methodenaufruf

Code:
if (einKonto.abheben(..)) {
System.out.println ....
}
else {
System.out.println ...
}

abfragen. Das kannst du aber eigentlich schon in deiner Methode machen ... . Also, wenn behoben werden darf, gleich einen Output auf die Console rausschreiben ... . Das Gleiche beim Einzahlen ;)

danke dir nochmals für deine ausführungen. hab mir es gestern abend angesehen und noch 2 aufgaben gemacht. ich glaub das hab ich jetzt drin.
 
TommyMo hat gesagt.:
Oki doki. Das hört sich, wenn ichs richtig verstanden habe, nach einem Try-Catch Block an.

Try-Catch is klar?

Wenn ja, pack einfach die Zuweisung oder den Zugriff auf das Array in den Try Block, und die Behandlung, was du im Gegenfall machen willst, also wenn ein Fehler auftritt, in den Catch-Block.

Gruss
TOM
mh... naja so klar ist das nicht.
 
Code:
public class TestExceptions {
static String arr[] = {"Alpha", "Beta", "Gamma", "Zeta"};
public static void zeigeEintrag(int index) {
System.out.println("Eintrag " + index + " lautet: " +
arr[index]);
}
public static void main(String args[]) {
int index = Integer.parseInt(args[0]);
zeigeEintrag(index);
}
}


irgendwie so müsste das funktionieren, oder
Code:
  try {
			zeigeEintrag();
		} catch(NichtMoeglichException) {
			System.out.println("Betrag kann nicht abgehoben werden");
		}
	}
}
 
Hi!

Hm ... also nochmal zurück zur Aufgabenstellung:

Mußt du eine eigene, d.h. selbstimplementierte Exceptionbehandlung implementieren, oder auf der gegebenen sehr guten von Java aufbauen? Wenn du auf die von Java aufbauen kannst, brauchst du dir keine eigene Klasse implementieren, wenn ja, dann muss diese Klasse von ... moment, ich bin mir jetzt auch nicht sicher, aber ich glaube Exception abgeleitet sein.

Code:
public class MyTerribleExamException extends Exception {
 ...
}

Aber zunächst mal eine kleine Einführung in Exception, oder Fehlerbehandlung (soweit ich das verstanden habe zumindest :) )

Exceptions sind nichts anderes als definierte Fehler, die bei gewissen Bedingungen auftauchen und "geworfen" werden. Dies erleichtert einerseits das Kontrollieren von Code, da du zur Laufzeit, also wenn der Code ausgeführt wird, einen definierten Fehler vorfindest, wenn ein solcher Fehlerfall auftritt, und zweitens hat man so auch die Möglichkeit das eigene Fehler oder Fehlerbedingungen zu definieren. Die Syntax sieht wie folgt aus:

Methode die eine Exception werfen soll:
Code:
public void myTestExceptionMethod( ... ) throws MyTerribleExamException {
 // do your stuff ...
 // if wrong then ...
 throw new MyTerribleExamException ("Fehlerbeschreibung");
}

Du siehst, es gibt also Methoden die Exceptions "werfen" (throw). Nun, wenn diese Methode verwendet wird, kann es eben passieren, dass ein Fehler auftritt, und eine Exception geworfen wird. Was, wenn das jetzt passiert? Ganz einfach, das Zauberwort, oder die Wörter sind "try-catch". Mit HIlfe von sogenannten try-catch Blöcken kannst du Exceptions jeglicher Art abfangen und auch behandeln (es gibt dann noch soetwas wie final, aber das wollen wir hier mal aussparen). Im try Block wird, wie der Name schon sagt, "versucht" etwas bestimmtes zu machen, z.b. auf einen Index eines Arrays zuzugreifen. Hierbei wird eine sensible Methode oder ein Vorgang ausgeführt.

Code:
// wir befinden uns in einer beliebigen methode, z.b. main ....
try {
 // aufruf des sensiblen codes, der eine Exception werfen kann ...
 myTestExceptionMethod(...);
}

Hierbei können nun Exceptions auftreten. Der try Block registriert nun diesen Exceptionwurf, und leitet ihn an den catch Block (ums vorsichtig auszudrücken) weiter. Im catch Block wird diese Exception abgefangen und alles was dann IM catch Block an definierten Vorgehensweisen festgelegt worden ist, wird ausgeführt. Dies könnte, wie im Beispiel hier, eine Ausgabe auf die Console sein.

Code:
catch (MyTerribleExamException e) {
 // reagiere auf die abgefangene Exception ...
 System.out.println("Jo! Eine Exception ist aufgetreten!");
}

Wenn man nicht genau weiß, welche Exception aufgetreten ist, dann kann man auch statt "MyTerribleExamException" einfach nur "Exception" schreiben (das ist möglich, da ja ein Objekt geworfen wird, und alle Exceptionklassen von Exception abgeleitet worden sind).

Hm ... jo, ich hoffe es war einigermassen verständlich für dich. Wenn nicht, einfach posten :)

Gutes Schaffen wünsch ich!

Gruß
TOM
 
@morphi79:
Ich denk das probieren wir nochmal, denn mit sowas kann niemand arbeiten.
Gib doch mal an was Du genau nicht verstanden hast.
 
wenn ich diesen code habe

Code:
public class TestExceptions {
static String arr[] = {"Alpha", "Beta", "Gamma", "Zeta"};
public static void zeigeEintrag(int index) {
System.out.println("Eintrag " + index + " lautet: " +
arr[index]);
}
public static void main(String args[]) {
int index = Integer.parseInt(args[0]);
zeigeEintrag(index);
}
}

und möchte das machen:
Modifizieren Sie die Klasse so, dass die Methode zeigeEintrag() keine Exception wirft, wenn der übergebene Index außerhalb der Array-Grenzen liegt. Stattdessen soll in einem solchen Fall die Meldung ausgegeben werden, dass es keinen Eintrag mit diesem Index gibt. Verwenden Sie dazu Anweisungen zur Ausnahmebehandlung, nicht die Eigenschaft length des Arrays.

Muss ich dann zuerst eine Klasse mit extends bauen?
 
Ich hab zwar nicht viel Ahnung von Java, aber fuer sowas ist doch try...catch zustaendig.

Also ein Konstrukt dieser Art (oder aehnlich):
Code:
try
{
 //
}
catch (Exception exc)
{
 //
}
 

Neue Beiträge

Zurück