Exception aus Thread werfen

artus1977

Mitglied
Hallo zusammen

Ich stehe vor dem Problem, dass ich gerne Exceptions aus einem Thread werfen möchte.

Java:
class Arbeit extends Thread{

void run() throws Exception{

sysout("Hallo");

}

}

Blos geht das "throws Exception" nicht.

Danke für jeden Tip ;-)
 
G

Gast2

Gast
Genau, so geht das nicht.
Du musst
Code:
public void run()
überschreiben und die wirft nunmal keine Exception :)

Weshalb wollst du den in der run() ne exception werfen? Bzw. wer soll die fangen?
 

artus1977

Mitglied
Hi EikeB

In meinem main möchte ich folgenden Code ausführen.

Java:
ScheduleClassManager mySCM = new ScheduleClassManager("com.prg.BusinessLogik","07:00","18:36");
			
mySCM.start();

Dabei geht es darum, dass ich irgend eine Klasse übergeben kann, wo ich Timer gesteuert sagen kann, wann was ausgeführt werden soll. Also als Beipspiel wird von 07:00 bis 18:36 etwas ausgeführt, danach geht meine Anwendung schlafen und erwacht erst wieder um 07:00.

Jetzt würde ich natürlich gerne die Exception aus meinem Thread abfangen


Java:
ScheduleClassManager mySCM = new ScheduleClassManager("com.prg.BusinessLogik","07:00","18:36");
	
try {		
mySCM.start();
}
catch (Exception e){
System.out.println("EXCEPTION ABGEFANGEN :-) ");
}

Hoffe das sagt dir jetzt mehr.......ist nicht einfach so einen ersten Forumseintrag zu erstellen ;-)
 

Michael...

Top Contributor
Geht nicht, da Du ja mit start() einen neuen Thread erzeugst, der "unabhängig" vom aufrufenden Thread läuft. Die Exception kannst Du nur innerhalb des Threads, in dem Sie auftreten kann auch abfangen.
 
S

SlaterB

Gast
das widerspricht nach wie vor dem Wesen von Threads,
nach start() bleibt der Aufrufer nicht stehen und wartet vielleicht auf einen Rückgabewert, sondern läuft weiter,
bis nach 3 Min. die Exception kommt ist der Aufrufer längst nicht mehr im try/catch-Block,

synchron vs asynchron,
wenn du mit jemanden am Telefon sprichst, kannst du direkt auf eine Antwort warten,

schickst du aber einen Brief oder eine Email, so liest das Gegenüber diese Nachricht erst viel später in einem anderen Kontext,
du selber sitzt dann (wahrscheinlich) nicht mehr vorm Email-Account oder mit Stift am Schreibtisch, das Empfangen einer Nachricht ist ein vollkommen unabhängiger anderer Vorgang
 
T

Tomate_Salat

Gast
dann mach doch lieber soetwas:
Java:
// Arbeit.java
public class Arbeit
	extends Thread
{
	private IExceptionHandler handler;
	
	public Arbeit(IExceptionHandler handler)
	{
		this.handler	= handler;
	}
	
	@Override
	public void run()
	{
		try
		{
			Thread.sleep(1000);
		}
		catch(InterruptedException e)
		{
			handler.catchException(e);
		}
	}
	
	public static void main(String[] args)
	{
		IExceptionHandler handler	= new IExceptionHandler()
		{
			
			@Override
			public void catchException(Exception e)
			{
				System.out.println("EXCEPTION ABGEFANGEN :-) ");
			}
		};
		
		new Arbeit(handler).start();
	}
}

// IException.java
public interface IExceptionHandler
{
	public void catchException(Exception e);
}

kannst das Interface beliebig erweitern und somit auch Exceptions unterschiedlich behandeln oder eben eine Standartvariante festlegen...es erlaubt dir somit ein besseres Exceptionhandling, dass du ggf auch austauschen kannst (z.B. könntest du einen Debugmodus einbauen, der die Exceptions anderster behandelt als der in der Release etc)

MFG

Tomate_Salat
 

hemeroc

Bekanntes Mitglied
Das mit dem UncoughtExceptionHandler geht zwar prinzipiell allerdings hast du keine Ahnung was die Exception wirft bzw könnte es mühsamer sein das herauszufinden und is in dem Fall eher unsauber.
Die Lösung von Tomate_Salat kommt meiner Meinung nach dem was hier denke ich die allgemeine "Best Practice" wäre recht nahe, nämlich eine Callback-Funktion.
  • Gib deinem Thread eine Instanz der Klasse mit die ihn startet und generiere in der Klasse die ihn startet eine Callback-Funktion.
  • Behandle die Exception soweit als möglich in deinem Thread.
  • Rufe dann die Callback-Funktion auf um dem "Ersteller" eine Rückmeldung zu geben.
Hier gibts auch einiges was dir das Leben erleichtern kann Stichwort: Listener, ObserverPattern
LG Hemeroc
 

Murray

Top Contributor
@Hemeroc: wenn es um allgemeines Feedback oder auch nur eine typsichere, spezifischere Behandlung bestimmter Exception-Typen geht, bin ich bei Dir; hier wäre eine Callback-Funktion (bes. in Form von Standard-Patterns wie Event/Listener oder Observer/Observable) ein guter Ansatz.
Wenn die Callback-Funktion aber nichts anderes macht als unterschiedlos alle Exceptions zu akzeptieren, dann macht sie eigentlich nichts anderes als der UncaughtExceptionHandler. Insofern würde ich anstelle des Callbacks mit der einfachen catchException-Methode doch eher den Standard-Mechanismus verwenden; was soll daran denn unsauber sein?
 

alderwaran

Mitglied
hier wäre eine Callback-Funktion (bes. in Form von Standard-Patterns wie Event/Listener oder Observer/Observable) ein guter Ansatz.

daran dachte ich zuerst auch.

Java:
import java.util.Observable;
import java.util.Observer;

public class Main implements Observer {

    public Main() {
        Arbeit arbeit = new Arbeit();
        arbeit.addObserver(this);
        arbeit.run();
    }

    public static void main(String[] args) {
        Main m = new Main();
    }

    public void update(Observable o, Object arg) {
        Exception e = (Exception) arg;
        System.out.println(e.getMessage());
    }
}

class Arbeit extends Observable implements Runnable {

    public void run() {
        try {
            Thread.sleep(50000);
        } catch (InterruptedException e) {
            super.setChanged();
            super.notifyObservers(e);
        }
    }
}
 

artus1977

Mitglied
Hallo zusammen

Kurzes Lebenszeichen vom Auslöser ;-)

Zuerstmal danke für eure Beiträge und Hilfe!!! Ich muss mich aber noch aus dem Sammelsurium von Möglichkeiten durcharbeiten.
... und versuchen zu Verstehen ;-)

Nach der bildlichen Darstellung der Theorie von SlaterB, muss ich mir eh überlegen, ob ich so auf dem richtigen Weg bin.
 
S

SlaterB

Gast
vielleicht brauchst du keinen Thread sondern einen stinknormalen Methodenaufruf,
da gibts Rückgabewert und Exceptions, der Aufrufer wartet solange
 
T

Tomate_Salat

Gast
Dann schreib mal genauer, was du vorhast, dann können wir dir eventuell sagen ob du auf dem richtigen weg bist
 

hemeroc

Bekanntes Mitglied
@Hemeroc: wenn es um allgemeines Feedback oder auch nur eine typsichere, spezifischere Behandlung bestimmter Exception-Typen geht, bin ich bei Dir; hier wäre eine Callback-Funktion (bes. in Form von Standard-Patterns wie Event/Listener oder Observer/Observable) ein guter Ansatz.
Wenn die Callback-Funktion aber nichts anderes macht als unterschiedlos alle Exceptions zu akzeptieren, dann macht sie eigentlich nichts anderes als der UncaughtExceptionHandler. Insofern würde ich anstelle des Callbacks mit der einfachen catchException-Methode doch eher den Standard-Mechanismus verwenden; was soll daran denn unsauber sein?

Sry sry sry,... -_- war mein Fehler,... ich hab irgendwie DefaultUncaughtExceptionHandler gelesen frag mich bitte ned warum und den einen für möglicherweise n Threads zu verwenden is unsauber. So is der Ansatz mit einem UncaughtExceptionHandler für den einen Thread von dir eh gut.
Nochmal sry.
LG Hemeroc
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
J Exception in thread "main" Java Basics - Anfänger-Themen 1
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
V Threads Exception in Thread behandeln Java Basics - Anfänger-Themen 3
P Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 1
K Exception in thread "main" Java Basics - Anfänger-Themen 7
D Exception in thread "AWT-EventQueue-0" Java Basics - Anfänger-Themen 8
L Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 2
F Exception in thread main java.lang.StackOverflowError Java Basics - Anfänger-Themen 3
A Compiler-Fehler Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 7
C Exception in thread "AWT-EventQueue-0 Java Basics - Anfänger-Themen 15
T Problem mit Eclipse? Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 4
M Exception in thread "main" java.lang.NoClassDefFoundError: MeineKlasse Java Basics - Anfänger-Themen 12
M Exception in thread "AWT-EventQueue-0" Java Basics - Anfänger-Themen 7
1 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException Java Basics - Anfänger-Themen 5
S Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 11
S Umgebungsvariable Exception in thread "main" java.lang.UnsatisfiedLinkError: no J3D in java.librar y.path Java Basics - Anfänger-Themen 15
M Klassen Exception in thread "main" java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 2
D Exception in thread "main" Java Basics - Anfänger-Themen 8
A Exception in thread "main" Java Basics - Anfänger-Themen 7
S Exception in thread "main" Java Basics - Anfänger-Themen 3
J Datentypen Exception in thread "AWT-EventQueue-0"?? Java Basics - Anfänger-Themen 4
B Exception in thread "main" java.lang.NullPointerException Fehler Hilfe! Java Basics - Anfänger-Themen 4
T Thread 2x starten verursacht Exception Java Basics - Anfänger-Themen 3
L Bubblesort: Exception in Thread "main" Java Basics - Anfänger-Themen 5
Y Exception in thread Java Basics - Anfänger-Themen 11
Spin Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: data must Java Basics - Anfänger-Themen 10
A Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 16
A GELÖST -- Exception in thread "main" Java Basics - Anfänger-Themen 3
B Fehlermeldung - Exception in thread "main" java.lang.Error: Unresolved compilation pr Java Basics - Anfänger-Themen 16
E Fehler: "Exception in thread "main" java.lang.NoSuchMethodError" Java Basics - Anfänger-Themen 15
G Fehler: Exception in thread main java.lang.noClassDefFound Java Basics - Anfänger-Themen 7
L Exception in thread "main" java.util.NoSuchElement Java Basics - Anfänger-Themen 4
A Do/While Problem (Exception in thread "main" java. Java Basics - Anfänger-Themen 4
M "exception in thread "main" java.lang.NullPoi Java Basics - Anfänger-Themen 2
S Exception in thread "main" java.lang.UnsupportedCl Java Basics - Anfänger-Themen 4
P Exception in thread "main" Java Basics - Anfänger-Themen 4
O java.lang.NoClassDefFoundError Exception in thread "mai Java Basics - Anfänger-Themen 5
V Exception in thread "main" java.lang.NoClassDefFou Java Basics - Anfänger-Themen 21
S Exception in thread "main" java.lang.NoSuchMethodE Java Basics - Anfänger-Themen 3
S Exception in thread Java Basics - Anfänger-Themen 7
NightmareVirus Exception in thread "main" java.lang.NoSuchMethodE Java Basics - Anfänger-Themen 8
A "Exception in thread "main" java.lang.NoCLass Java Basics - Anfänger-Themen 10
N exception in thread main . Java Basics - Anfänger-Themen 3
A Exception in thread "Thread-33" java.lang.NoClassD Java Basics - Anfänger-Themen 10
C Exception in thread "main" java.lang.NoClassDefFou Java Basics - Anfänger-Themen 9
vogella Exception in thread "main" java.lang.NoClassDefFou Java Basics - Anfänger-Themen 4
F Fehlermeldung: Exception in thread. Java Basics - Anfänger-Themen 17
R Exception in thread "main" java.lang.NoSuchMethodE Java Basics - Anfänger-Themen 6
C exception in thread "main" java.lang.NoClassDefFou Java Basics - Anfänger-Themen 7
A Fehlermeldung: Exception in thread "main" java.lan Java Basics - Anfänger-Themen 3
H Exception in thread "main" java.lang.NoClassDefFou Java Basics - Anfänger-Themen 3
G Exception in thread Java Basics - Anfänger-Themen 9
R Exception in Thread "main" . Kommandozeile/Netbean Java Basics - Anfänger-Themen 8
L Exception in thread "main" java.lang.NoClassDefFou Java Basics - Anfänger-Themen 4
R Exception in thread "main" java.lang.NullPointerEx Java Basics - Anfänger-Themen 10
B Exception in thread "main"... Java Basics - Anfänger-Themen 3
H exception in thread mainjava.lang.noclass ... Java Basics - Anfänger-Themen 3
L Exception in thread "main" java.lang.NoSuchMethodE Java Basics - Anfänger-Themen 3
K Exception in thread "main" java.lang.NoClassDefFou Java Basics - Anfänger-Themen 8
J Exception in thread "main" java.langClassNoFoundEr Java Basics - Anfänger-Themen 2
H Exception in thread "main" java.lang.NoClassDefFou Java Basics - Anfänger-Themen 5
B Fehler: Exception in Thread "main" java.lang.NoCla Java Basics - Anfänger-Themen 2
G Exception in thread "main" java.lang.NoClassDefFou Java Basics - Anfänger-Themen 2
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
1 Exception Java Basics - Anfänger-Themen 2
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben