Seite 1 von 2

[JDK 1.6 & JCreator 4.5LE] Die Sache mit IOException.

Verfasst: 29.10.2008 17:22
von Mok
Hi!
Seit diesem Schuljarh bin ich in einer HTL für EDV & Programmierung. In der Ersten lernen wir noch Java. Da ich aber unter ein paar anderen ziemlich vorauslerne, will ich nun eine IOException-Prüfung machen. Wer nicht weiß, was ich meine: Wenn der Benutzer bei einem Scanner statt Zahlen eine Zeichenkette eingibt, soll das Programm fortlaufen, mit der Meldung "Fehler! Es müssen ganze nicht-dezimal-Zahlen eingegeben werden!" anstatt, dass das Programm abstürtzt man

Code: Alles auswählen

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:840)
    at java.util.Scanner.next(Scanner.java:1461)
    at java.util.Scanner.nextInt(Scanner.java:2091)
    at java.util.Scanner.nextInt(Scanner.java:2050)
    at Rechteck.main(Rechteck.java:28)
...liest.
Ich hab schon gegoogelt und einige Beispiele angeschaut, nur meldet mir mein Compiler dauernd Fehler.[/code]

Grüzze, Mok

Verfasst: 29.10.2008 18:00
von ZeHa
Weißt Du wie ein try-catch-Block funktioniert?

Verfasst: 29.10.2008 18:09
von Mok
ZeHa hat geschrieben:Weißt Du wie ein try-catch-Block funktioniert?
:roll: ich glaub das Emoticon sagt schon alles.

Verfasst: 29.10.2008 18:19
von milan1612
Wird hier einigermaßen gut erklärt: http://www.softwareproduction.de/progra ... _2_12.html

Verfasst: 29.10.2008 18:26
von NicTheQuick

Code: Alles auswählen

try {
  // Code, der einen Fehler auswerfen könnte
} catch (IOException e) {
  // Wenn in obigem Code eine IOException geflogen ist,
  // dann führe diesen Code aus.
}
Wenn du allgemein statt 'IOException' nur 'Exception' schreibst, werden alle
auftretbaren Fehler gefangen und der entsprechende Code im 'catch'-Block
ausgeführt.
Im 'catch'-Block kannst du den Fehler 'e' dann auch weiterverarbeiten,
auswerten oder den Fehlertext normal über die Konsole ausgeben.

Verfasst: 29.10.2008 21:13
von ZeHa
Kann man gewissermaßen auch mit dem OnError-Zeug aus PureBasic vergleichen... sprich, wenn ein Fehler auftritt (on error), dann springt er (goto) zum Catch-Block.

Verfasst: 30.10.2008 16:41
von Mok
NicTheQuick hat geschrieben:

Code: Alles auswählen

try {
  // Code, der einen Fehler auswerfen könnte
} catch (IOException e) {
  // Wenn in obigem Code eine IOException geflogen ist,
  // dann führe diesen Code aus.
}
Wenn du allgemein statt 'IOException' nur 'Exception' schreibst, werden alle
auftretbaren Fehler gefangen und der entsprechende Code im 'catch'-Block
ausgeführt.
Im 'catch'-Block kannst du den Fehler 'e' dann auch weiterverarbeiten,
auswerten oder den Fehlertext normal über die Konsole ausgeben.
Und wo schreib ich dann den restlichen Code hin?

Verfasst: 30.10.2008 16:45
von NicTheQuick
Welcher restliche Code?
Du schreibst im 'try'-Block den Code, der einen Fehler werfen kann, und den
restlichen Code, schreibst du je nachdem direkt mit in den 'try'-Block, oder
hinter das gesamte Konstrukt.

Verfasst: 30.10.2008 16:50
von Mok
Muss ich die Deklarationen (int, boolean, float etc.) außerhalb schreiben?
Und wofür steht e
Und wie kann ich das Zeugs im TRY-Block nochmals ausführen?

Verfasst: 07.02.2009 14:49
von Mok
Sorry wegen Doppelpost, aber sonst liest das keimer mehr hier!

Also, vergesst alle Fragen von mir da oben.
Was ist an diesem Code falsch?

Code: Alles auswählen

import java.util.Scanner;
import java.io.IOException;
public class Eratosthenes {
	public static void main (String[] args) {
		try {
			int n;
			boolean[] istPrim;
			Scanner eingabe = new Scanner(System.in);
			
			System.out.print("Wie weit sollen die Primzahlen berechnet werden? ");
			n = eingabe.nextInt();
		} catch (IOException e) {
			System.out.print("Fehler bei Eingabe!");
		}
	}
}
Selbst wenn ich public static void main (String[] args) throws IOException { schreibe bekomm ich folgende Fehlermeldung:
exception java.io.IOException is never thrown in body of corresponding try statement