Try-Catch-Frage

Status
Nicht offen für weitere Antworten.
J

Java-Erstanwender

Gast
Hi,
bin neu in der Java-Insel. Komme von c/c++ und VB.NET/6...das zu meinen Grundkentnissen ;)

Nun soll ich etwas in Java programmieren, und versuche mich grad an verschieden Sachen, aber nun zu meiner Frage:

Wofür kann ich try-catch alles benutzen?

Ich habe mir eine kleine Klasse "meinDatum" gebastelt. Bei der Methode "setzeDatum" wollte ich einige try-catch'es' einfügen:

Code:
public class MeinDatum {

	private int tag;
	private int monat;
	private int jahr;
	
	public void setzeDatum(int t, int m , int j) {
		try{
			tag=t;
		}
		catch([b]##############[/b]){
		System.out.println("Fehler");	
		}
		monat=m;
		jahr=j;
		}
	public String ausgabe(){return(tag + "." + monat + "." + jahr);}
}

dort wo ich die Rauten (#) im catch gesetzt habe, wollte ich eigentlich abfangen, das der Tag nur zw. 1und 31 seien darf.

ich weiß, das ist keine wirkliche Datumsprüfung, aber mir gehts nur ums Prinzip, ob ich try-catch evtl son bisschen wie if-else nehmen kann, um Fehler abzufangen, doch ich lese immer nur von irgendwelchen Exceptions etc...

also nochmal, es dient alles nur dazu, damit ich ein bisschen lerne, um später damit gut umgehen zu können, deswegen freue ich mich über jeden Tipp, der mich evtl weiterbringt!

MfG
Java-Erstanwender
 

DeepBlue

Aktives Mitglied
Ein try - catch Block dient eigentlich eher dazu eine auftretende Exception zu erkennen und zu behandeln. In diesem Fall müsstest du prüfen, ob der Tag <= 31 oder >=1 ist, und wenn nicht eine Exception (hier eine IOException) erstellen:

Code:
if((tag<1)||(tag>31)) {
  throw new IOException("tag muss einen Wert von 1-31 haben")
}

Bei der Methode solltest du nun noch kenntlich machen, dass diese eine Exception verursachen kann:

Code:
public void setzeDatum(int t, int m , int j) throws IOException

Beim Aufruf dieser Methode kommt nun der try-catch Block zum Einsatz:

Code:
try{
  setzeDatum(t, m, j);
}
catch(IOException e) {
  // Fehlerbehandlung
  System.err.println(e.getMessage());
}

Ist nur eine Möglichkeit des Exceptionhandling, aber meiner Meinung nach eine recht übersichtliche.

mfg DeeP
 
B

bygones

Gast
als Nachtrag noch erwähnt, dass in diesem Falle eine IOExcpetion nicht sehr gut ist... Aufgrund der Logik wäre eine IllegalArgumentExcpetion sinnvoller !
 
G

Guest

Gast
danke, aber wo kommt das erste if hin, welches du gepostet hast?
 
B

bygones

Gast
Anonymous hat gesagt.:
danke, aber wo kommt das erste if hin, welches du gepostet hast?
ich würds gleich am anfange der methode setzen
Code:
public void setzeDatum(int t, int m , int j) { 
      if(t < 1 || t > 31) {
            throw new IllegalArgumentExeption("Falscher Tag !"),
      }
      if(m < 1 || m > 12) {
           throw new IllegalArguementException("Falscher Monat !"),
      }
      tag = t
      monat=m; 
      jahr=j; 
      }
 
G

Guest

Gast
deathbyaclown hat gesagt.:
Anonymous hat gesagt.:
danke, aber wo kommt das erste if hin, welches du gepostet hast?
ich würds gleich am anfange der methode setzen
Code:
public void setzeDatum(int t, int m , int j) { 
      if(t < 1 || t > 31) {
            throw new IllegalArgumentExeption("Falscher Tag !"),
      }
      if(m < 1 || m > 12) {
           throw new IllegalArguementException("Falscher Monat !"),
      }
      tag = t
      monat=m; 
      jahr=j; 
      }

IllegalArguementException kentzeichnet er rot:

...cannot be resolved to a type


das sagt er auch, wenn ich IOException nehme..

hier mal die main(ein teil):

Code:
setzeDatum.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				MeinDatum Meins = new MeinDatum();
				try {
					try {
					Meins.setzeDatum(Integer.parseInt(tag.getText()),Integer.parseInt(monat.getText()),Integer.parseInt(jahr.getText()));
					}
					catch(IOException e){  //hier sagt er acuh "rotkreuz"->cannot be resolved to a type
						System.err.println(e); 
					}
					lb_DatumAusgabe.setText(Meins.ausgabe());
					System.out.println("widgetSelected()"); // TODO Auto-generated Event stub widgetSelected()}
				}
				catch(NumberFormatException p) {
					System.out.println("Keine Zahlen eingegeben!Bitte noch einmal probieren");
				}
		
			}
		});
 

TRunKX

Bekanntes Mitglied
so wie sich das anhört musste die Exceptions noch beim Import erwähnen! :!: das sind auch Klassen die eingebunden werden wollen :meld: .

Also einfach dahinter fehen und dann Strg+Leertaste drücken rest macht Eclipse fleissig wie es ist selbst!
 
G

Gast

Gast
dankeschön, klappt nun, auch wenn ich es nicht ganz kapiere ;)

hier nochmal so wie es jetzt ist:

Code:
public class MeinDatum {

	private int tag;
	private int monat;
	private int jahr;
	
	public void setzeDatum(int t, int m , int j) throws IllegalArgumentException{ 
	      if(t < 1 || t > 31) { 
	            throw new IllegalArgumentException("Falscher Tag !"); 
	      } 
	      if(m < 1 || m > 12) { 
	           throw new IllegalArgumentException("Falscher Monat !"); 
	      } 
	      tag = t; 
	      monat=m; 
	      jahr=j; 
	      }
	public String ausgabe(){return(tag + "." + monat + "." + jahr);}
}

----------------------------------------------

Code:
setzeDatum.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
			public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
				MeinDatum Meins = new MeinDatum();
				try {
					try {
						Meins.setzeDatum(Integer.parseInt(tag.getText()),Integer.parseInt(monat.getText()),Integer.parseInt(jahr.getText()));
						lb_DatumAusgabe.setText(Meins.ausgabe());
					}
					catch(Exception w){
						lb_DatumAusgabe.setText("");
						System.out.println(w);
					}
				}
				catch(NumberFormatException p) {
					System.out.println("Keine Zahlen eingegeben!Bitte noch einmal probieren");
				}
		
			}
		});

was mich nun noch wundert, ist dass ich keine void main (string[]) irgendwas benötige,habe nur:

private void createMainForm() {[...ales drin...]}

..habe eine shell aus der swt-libary...aber es funktioniert

wobei er sagt:the method createMainForm() from the type Start is never uesed locally! (geld unterstrichen)
 
J

Java-Erstentwickler^^

Gast
setzt er bei meiner datumsklasse nicht trotzdem den tag und den monat? oder springt er im "Illegal-fall" aus dem 'setter'?
 

TRunKX

Bekanntes Mitglied
Er springt an dem Punkt wo der Fehler auftritt wenn Tag also geht dann macht er das wenn Monat dann nicht geht ist Tag aber gesetzt also im catch sollte dafür dann evtl ein Reset sen falls das Programm damit nicht total abbrechen soll.... was ich mal nicht denke!

Und was war mit dem import hattest da was nicht verstanden? Was denn nicht?
 
G

Guest

Gast
TRunKX hat gesagt.:
Er springt an dem Punkt wo der Fehler auftritt wenn Tag also geht dann macht er das wenn Monat dann nicht geht ist Tag aber gesetzt also im catch sollte dafür dann evtl ein Reset sen falls das Programm damit nicht total abbrechen soll.... was ich mal nicht denke!

Und was war mit dem import hattest da was nicht verstanden? Was denn nicht?

und wie mach ich so einen reset :?:

das mit dem import klappte, was ich nicht genau verstanden habe, sind halt die exeptions an sich so, also ob es an dieser stelle zb. sinnvoll ist etc...hier zb:

Code:
try { 
                  Meins.setzeDatum(Integer.parseInt(tag.getText()),Integer.parseInt(monat.getText()),Integer.parseInt(jahr.getText())); 
                  lb_DatumAusgabe.setText(Meins.ausgabe()); 
               } 
               catch(Exception w){ 
                  lb_DatumAusgabe.setText(""); 
                  System.out.println(w); 
               }
aber naja, es klappt ja
 
G

Gast

Gast
System.out.println(w); im catch-Block ist nich passend.

entweder:

System.out.println(w.getMessage()); //für einbisschen information reicht, weil die exception vernünftig behandelt wurde

oder

w.printStackTrace(); //hier spuckts mit alle einzellheiten
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
M Frage zu try ... catch Java Basics - Anfänger-Themen 9
I Frage zu Try - Catch - Finally Java Basics - Anfänger-Themen 10
C Frage zu try - catch (saubere Lösung?) Java Basics - Anfänger-Themen 3
C Exceptions, try, catch --> Frage Java Basics - Anfänger-Themen 7
D Frage try and catch Java Basics - Anfänger-Themen 7
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
missy72 Catch Blöcke zusammenfassen Java Basics - Anfänger-Themen 6
Ostkreuz wie geht der catch? Java Basics - Anfänger-Themen 3
D try/catch-Block bei for-Schleife Java Basics - Anfänger-Themen 14
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
districon Try - Catch Java Basics - Anfänger-Themen 8
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
Y Wie kann ich die Variable in der Try Catch returnen? Java Basics - Anfänger-Themen 3
B Try-Catch Block Java Basics - Anfänger-Themen 3
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
B try catch finally Java Basics - Anfänger-Themen 2
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
H throws und try catch Java Basics - Anfänger-Themen 8
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
I Try-Catch innerhalb eines Catchblocks Java Basics - Anfänger-Themen 1
J Endlosschleife bei Try-Catch? Java Basics - Anfänger-Themen 3
K JOptionPane/catch/try/finally/if Java Basics - Anfänger-Themen 9
V InputMismatchException (Try and catch) Java Basics - Anfänger-Themen 10
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
J Erste Schritte catch Exeption Parameter Java Basics - Anfänger-Themen 7
TheMenox Try and Catch Java Basics - Anfänger-Themen 12
J Try Catch Java Basics - Anfänger-Themen 6
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
J Code in Try-Catch Block wird nicht komplett ausgeführt Java Basics - Anfänger-Themen 5
A Nicht zu findender Fehler in einem try/catch Block Java Basics - Anfänger-Themen 6
F try/catch Ausführungen ? Java Basics - Anfänger-Themen 3
S try-catch - Variablen werden nicht an return übergeben Java Basics - Anfänger-Themen 3
Z Catch & Exceptions Java Basics - Anfänger-Themen 4
I Exception try-catch Java Basics - Anfänger-Themen 1
E Buchstaben verhindern / Try & Catch Block Java Basics - Anfänger-Themen 3
F try/catch - (else) Java Basics - Anfänger-Themen 11
L Warum ist der catch-Block nicht erreichbar ? Java Basics - Anfänger-Themen 8
C Problem mit try-catch in Schleife Java Basics - Anfänger-Themen 15
R Exceptions (try/catch) Java Basics - Anfänger-Themen 63
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
J Methoden try / catch exception Java Basics - Anfänger-Themen 5
S 'continue' in catch- und if-blöcken Java Basics - Anfänger-Themen 2
B Erste Schritte try-catch-Klauseln, überprüfte Ausnahmen Java Basics - Anfänger-Themen 4
D Erste Schritte Warum try-catch für FileWriter Java Basics - Anfänger-Themen 5
S try-catch-finally-Problem Java Basics - Anfänger-Themen 10
xehpuk Compiler-Fehler final Variable in try-catch Wert zuweisen Java Basics - Anfänger-Themen 8
F Exceptionbehandlung --> catch/throws Java Basics - Anfänger-Themen 11
M Try und Catch Java Basics - Anfänger-Themen 5
B Fehler mit try + catch verhindern Java Basics - Anfänger-Themen 8
N Catch Block in Try erzwingen Java Basics - Anfänger-Themen 14
E Problem mit for schleife/ try-catch block Java Basics - Anfänger-Themen 7
B Variablen Variablen in try / catch "public" machen? Java Basics - Anfänger-Themen 3
C Wiederholung von try-catch Java Basics - Anfänger-Themen 3
N try and catch block in finally Java Basics - Anfänger-Themen 8
M exception catch falsch? Java Basics - Anfänger-Themen 11
S catch Exception erklären Java Basics - Anfänger-Themen 2
C Variable in try/catch Java Basics - Anfänger-Themen 10
B Try and Catch Java Basics - Anfänger-Themen 6
StrikeTom Ein paar(2) Fragen zu throws und try + catch Java Basics - Anfänger-Themen 6
J try und catch Java Basics - Anfänger-Themen 7
G Exceptionfreie Anweisungen in try-catch-Blöcke, Java Basics - Anfänger-Themen 6
B Exception vor catch Block definieren Java Basics - Anfänger-Themen 9
S NumberFormatException , mit Try/Catch? Java Basics - Anfänger-Themen 7
B Try/catch Java Basics - Anfänger-Themen 11
M Try & Catch Java Basics - Anfänger-Themen 7
V Was ist ein Try-Catch Block Java Basics - Anfänger-Themen 4
M Nach catch mit der schleife weitermachen Java Basics - Anfänger-Themen 9
M try-catch, call-by-reference, Streaming und Strings Java Basics - Anfänger-Themen 10
S sauberer Stil von return Wert (try, catch, finally) Java Basics - Anfänger-Themen 9
S try-catch Java Basics - Anfänger-Themen 10
Tandibur Server führt "try-catch" nicht aus Java Basics - Anfänger-Themen 6
H Falsche Eingabe über try-catch abfangen Java Basics - Anfänger-Themen 2
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11
H try catch Java Basics - Anfänger-Themen 4
I double-Variable außerhalb des Try-Catch-Blocks nicht gültig Java Basics - Anfänger-Themen 2
D Catch wiederholt sich ständig Java Basics - Anfänger-Themen 2
T try-catch-finally Java Basics - Anfänger-Themen 8
G Anwendung von try-catch Java Basics - Anfänger-Themen 10
G try. catch Verwendung Java Basics - Anfänger-Themen 11
M Try-Catch-Problem Java Basics - Anfänger-Themen 4
G habe ein Catch problem Java Basics - Anfänger-Themen 7
C Nach Catch-Klausel Programm weiter laufen lassen Java Basics - Anfänger-Themen 5
B try & catch Problem mit Exception bzw String.split() Java Basics - Anfänger-Themen 5
G Bei catch beenden Java Basics - Anfänger-Themen 7
U catch mit finally Java Basics - Anfänger-Themen 5
B catch exception funktioniert nicht! Java Basics - Anfänger-Themen 14
ven000m try catch - was muss bei catch rein Java Basics - Anfänger-Themen 28
G Datenbank - catch Java Basics - Anfänger-Themen 2
H Konstruktor in Methode fremder Klasse: try-catch-Problem Java Basics - Anfänger-Themen 4
M return und try-catch Java Basics - Anfänger-Themen 6
M Try . catch erzwungen? Java Basics - Anfänger-Themen 11
F eigene Exception aus try-catch werfen Java Basics - Anfänger-Themen 10
A Syntaxproblem mit try und catch Java Basics - Anfänger-Themen 3
Silver-Blue fragen zu Swing und catch Exceptions Java Basics - Anfänger-Themen 2
G return fehler bei try catch Java Basics - Anfänger-Themen 8
H try und catch Java Basics - Anfänger-Themen 6
A try catch UNREACHABLE CODE Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben