try/catch - (else)

foerster7891

Aktives Mitglied
Hi,
wollte fragen ob die try catch Ausnahmebehandlung in Java ne Option hat um nur dann einen bestimmten Block auszuführen falls kein Fehler aufgetreten ist?
Also nach dem Motto
try {} catch () {} else {} ?
 

KSG9|sebastian

Top Contributor
try/catch/finally stellt doch genau das dar:

try - code ausführen
cathc - exception, etwas anderes tun (else-Fall)

Im try witd der Gutfall programmiert, im catch der Fehlerfall, im finally z.B. Resourcen freigeben
 

Camill

Bekanntes Mitglied
Nein.
Lager das try-catch einfach in eine Methode mit entsprechendem Rückgabewert aus oder setze einen Flag.

try/catch/finally stellt doch genau das dar:

try - code ausführen
cathc - exception, etwas anderes tun (else-Fall)

Im try witd der Gutfall programmiert, im catch der Fehlerfall, im finally z.B. Resourcen freigeben
Finally wird immer ausgeführt - die Frage war jedoch nach etwas was nur bei Erfolg ausgeführt wird.
 

foerster7891

Aktives Mitglied
Ok ich geb mal genau an was ich vorhabe:

Ich habe eine Classe ImageFrame gegeben die Funktioniert so wie sie ist und die hab ich nicht selber geschrieben:
Java:
	/**
	 * Wartet, bis eine Mausklick in die dargestellte Bitmap im GUI-Fenster erfolgt.
	 */
	public void waitMouseClicked() {
		try {
			synchronized (mouseClicked) {
				mouseClicked.wait();
			}
		} catch (InterruptedException e) {
		}
	}
Und ich wollte die jetzt um eine Methode MousePosition ergänzen:
Java:
	public double[] mousePosition( MouseEvent e ) {
		PointerInfo a = MouseInfo.getPointerInfo();
		Point point = new Point( a.getLocation() );
		SwingUtilities.convertPointFromScreen(point, e.getComponent());
		double[] koord = { point.getX(), point.getY() };
		return koord;
	}

Diese soll die MousePosition im Fall, dass in der Methode waitMouseClicked ein MouseClick erkannt wurde die Koordinate im ImageFrame liefern.
Meine Vermutung ist, dass waitMouseClicked ein extra Thread ist weil ich gelesen hab, dass synchronized bei für irgendwas bei Threads eingesetzt wird. (hab bisher noch nicht mit mehreren Threads gearbeitet und auch synchronized nicht ganz verstanden)

Hoffe ihr könnt mir auf diese Weise besser helfen.
 
N

nillehammer

Gast
Erst mal finde ich das double[][] für die Ausgabe von Koordinaten fragwürdig. Koordinaten sind immer Ganzzahlen. Das ist übrigens der Grund, warum die ganzen Methoden(, die auch Du benutzt,) alle int als Rückgabewert haben. Außerdem kannst Du Dir den Umweg über PointerInfo, Point und SwingUtllities sparen, indem Du direkt auf dem MouseEvent die richtigen Methoden aufrufst. Der neue Code sähe dann so aus:

Java:
//Koordinaten innerhalb des Bildschirms
public int[] mousePositionOnScreen(MouseEvent e ) {
  return new int[]{e.getXOnScreen(), e.getYOnScreen()};
}

// Oder innerhalb der Event verursachenden Komponente
public int[] mousePositionInComponent(MouseEvent e ) {
  return new int[]{e.getX(), e.getY()};
}
Nur, wo der von Dir gezeigte Code jezt try-catch-finaly-(else) oder so braucht, habe ich noch nicht verstanden.
 

foerster7891

Aktives Mitglied
Naja ich wollte den einen Teil in waitMouseClicked implementieren um so für den Fall, dass die Maus geklicked wurde die Position ausgegeben wird. Dachte in der Ausnahmebehandlung tritt genau dann kein Fehler auf, wenn tatsächlich ein Mausklick voranging.

Leider weiß ich eigentlich komplett nicht wie ich meinen Code dort implementiere!

würde mich freuen wenn mir dies jemand zeigen könnte.
 
N

nillehammer

Gast
Ich kann nicht erkennen, welchen Sinn die Methode waitMouseClicked() überhaupt hat. Kann sein, dass mir da etwas Kontext fehlt, aber ich halte sie für überflüssig. Mit den Events hast Du eigentlich alles, was Du brauchst. Bestimmte Komponenten feuern sie (die Event-Sources). Andere Komponenten interessieren sich für sie (die Listener) und registrieren sich, damit sie bei Auftreten informiert werden. Ich bin fast sicher, dass die Komponente, mit der Du die BitMap darstellst, auch MouseEvents feuert.
 

foerster7891

Aktives Mitglied
Ich kann ja mal die ganze ImageFrame.class reinstellen:

Java:
//hier irgendwelche Imports
/**
 * Diese Klasse stellt ein GUI-Fenster bereit, in dem eine Bitmap dargestellt
 * und auf Pixel-Ebene manipuliert werden kann.
 * 
 * Die dargestellte Bitmap wird bei einer Groessenaenderung automatisch skaliert.
 * 
 * @author pscb
 * @version 0.1
 */
public class ImageFrame {

	private static final int FRAME_DEFAULT_WIDTH = 800;
	private static final int FRAME_DEFAULT_HEIGHT = 600;

	private int bufferedimage_width;
	private int bufferedimage_height;

	private JPanel drawPanel;
	private BufferedImage img;
	private Graphics img_graphics;
	
	private Object mouseClicked = new Object();

	/**
	 * Erzeugt ein GUI-Fenster zur Darstellung und Manipulation einer Bitmap
	 * in einer vorgegebenen Standardgroesse. Die angelegte Bitmap besteht nur
	 * aus weissen Pixeln. 
	 * 
	 * @param title	Titel des GUI-Fensters
	 */
	public ImageFrame(String title) {
		this(title, FRAME_DEFAULT_WIDTH, FRAME_DEFAULT_HEIGHT);
	}

	/**
	 * Erzeugt ein GUI-Fenster in waehlbarer Groesse zur Darstellung und Manipulation
	 * einer Bitmap. Die angelegte Bitmap besteht nur aus weissen Pixeln. Die Groesse
	 * der Bitmap ergibt sich automatisch aus der Groesse des GUI-Fensters
	 * 
	 * @param title			Titel des GUI-Fensters
	 * @param frame_width	Breite des GUI-Fensters
	 * @param frame_height	Hoehe des GUI-Fensters
	 */
	public ImageFrame(String title, int frame_width, int frame_height) {
		JFrame frame = new JFrame(title);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(frame_width, frame_height);

		drawPanel = new JPanel(false) {
			private static final long serialVersionUID = 1L;

			public void paint(Graphics g) {
				super.paint(g);
				if (img != null) {
					g.drawImage(img, 0, 0, getWidth(), getHeight(), null);
				}
			}
		};
		frame.add(drawPanel);

		drawPanel.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent e) {
				synchronized (mouseClicked) {
					mouseClicked.notify();
				}
			}
		});
		
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		frame.setLocation((d.width - frame.getSize().width) / 2,
				(d.height - frame.getSize().height) / 2);
		
		frame.setVisible(true);

		bufferedimage_width = drawPanel.getWidth();
		bufferedimage_height = drawPanel.getHeight();

		img = new BufferedImage(bufferedimage_width, bufferedimage_height,
				BufferedImage.TYPE_INT_RGB);
		img_graphics = img.getGraphics();

		img_graphics.setColor(Color.WHITE);
		img_graphics.fillRect(0, 0, bufferedimage_width, bufferedimage_height);

		frame.repaint();
	}

	/**
	 * Liefert die Breite der Bitmap zurueck.
	 * 
	 * @return	Breite der Bitmap
	 */
	public int getWidth() {
		return bufferedimage_width;
	}

	/**
	 * Liefert die Hoehe der Bitmap zurueck.
	 * 
	 * @return	Hoehe der Bitmap
	 */
	public int getHeight() {
		return bufferedimage_height;
	}

	/**
	 * Setzt ein Pixel der Bitmap auf die angegebene Farbe.
	 * 
	 * Die x-Koordinaten der Pixel reichen von 0 bis <code>getWidth() - 1</code>.
	 * Die y-Koordinaten der Pixel reichen von 0 bis <code>getHeight() - 1</code>.
	 * 
	 * Die Koordinate (0,0) befindet sich in der linken oberen Ecke der
	 * dargestellten Bitmap.
	 * 
	 * @param x	x-Koordinate des Pixels
	 * @param y	y-Koordinate des Pixels
	 * @param c	neue Farbe des Pixels
	 */
	public void setPixel(int x, int y, Color c) {
		img_graphics.setColor(c);
		img_graphics.drawLine(x, y, x, y);
		drawPanel.repaint();
	}

	/**
	 * Wartet, bis eine Mausklick in die dargestellte Bitmap im GUI-Fenster erfolgt.
	 */
	public void waitMouseClicked() {
		try {
			synchronized (mouseClicked) {
				mouseClicked.wait();
			}
		} catch (InterruptedException e) {
		}
	}
}
 

Michael...

Top Contributor
Die Frage von nillehammer bleibt immer noch offen. Wofür die
Code:
waitMouseClicked
? Von wo aus wird sie aufgerufen?
 

foerster7891

Aktives Mitglied
da ich gerade komplett nicht durchblicke, habe ich einfach mal einen Professor angeschrieben. Es wurde uns ja gesagt, dass wir wenn wir nicht weiter wissen auch einfach per Mail fragen können. Der kennt sich dann auch mit den Klassen aus da sie von ihm sind.
 

KSG9|sebastian

Top Contributor
Nein.
Lager das try-catch einfach in eine Methode mit entsprechendem Rückgabewert aus oder setze einen Flag.


Finally wird immer ausgeführt - die Frage war jedoch nach etwas was nur bei Erfolg ausgeführt wird.

Inwiefern hab ich denn etwas anderes geschrieben?

try ist der Erfolgsfall - nur halt etwa spezieller, quasi if(keineException).

Für alles andere baut man return-Werte oder andere Bedingungen, meinetwegen auch im try/catch...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
J Frage zum Thema Exceptions (Try/Catch) Java Basics - Anfänger-Themen 3
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
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
M Frage zu try ... catch 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
I Frage zu Try - Catch - Finally Java Basics - Anfänger-Themen 10
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
C Frage zu try - catch (saubere Lösung?) Java Basics - Anfänger-Themen 3
G Bei catch beenden Java Basics - Anfänger-Themen 7
U catch mit finally Java Basics - Anfänger-Themen 5
C Exceptions, try, catch --> Frage Java Basics - Anfänger-Themen 7
J Try-Catch-Frage Java Basics - Anfänger-Themen 13
B catch exception funktioniert nicht! Java Basics - Anfänger-Themen 14
D Frage try and catch Java Basics - Anfänger-Themen 7
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