I am explicitly throwing an exception in action performed method and not catching it , so EDT exception handler should catch it and ideally EDT should stop working but when I click on the button of the frame , EDT is again started . How a thread can be restarted?
Asked
Active
Viewed 698 times
0
-
Please clarify your question and show us the code you already tried. – Diogo Moreira Jul 23 '13 at 12:47
2 Answers
2
When a thread throws an exception that isn't caught, Thread.UncaughtExceptionHandler will be called. If it hasn't been set, the default uncaught exceptionhandler will be called. The handler will display a stacktrace
and most likely be restarted, although the documentation doesn't specify what exactly are the steps taken.

Kayaman
- 72,141
- 5
- 83
- 121
-
http://stackoverflow.com/questions/4448523/how-can-i-catch-event-dispatch-thread-edt-exceptions discusses the happenings of EDT exceptions. – Kayaman Jul 23 '13 at 12:59
1
The EDT is a special case. It is restarted whenever it is stopped by an uncaught exception being thrown.
This is a good design because it ensures your entire GUI doesn't crash and burn because of an uncaught exception somewhere within, say, a button action.

Duncan Jones
- 67,400
- 29
- 193
- 254
-
Are you claiming that the EDT will actually shut down in case of an exception? – Kayaman Jul 23 '13 at 12:48
-
No, it has an uncaught exception handler that will prevent the thread from dying. – Kayaman Jul 23 '13 at 12:49
-
@Kayaman Do you have a reference that confirms the original thread doesn't stop? An exception handler does not indicate that the same original thread keeps running. See for example http://stackoverflow.com/questions/3020757/java-does-the-edt-restart-or-not-when-an-exception-is-thrown. – Duncan Jones Jul 23 '13 at 12:50
-
True, it will not necessarily be the same thread instance. I'll make edits. – Kayaman Jul 23 '13 at 12:54