[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-core-libs-dev
Subject: Swingworker do in background method does not caught and print exceptions?
From: David.Holmes () oracle ! com (David Holmes)
Date: 2010-09-27 22:26:38
Message-ID: 4CA11A1E.80205 () oracle ! com
[Download RAW message or body]
Paulo,
Paulo Levi said the following on 09/28/10 04:23:
> In in linux 64 bits.
> java version "1.6.0_20"
> OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1)
> OpenJDK 64-Bit Server VM (build 17.0-b16, mixed mode)
> from ubuntu repositories.
>
> A very simple swingworker started from the EDT:
>
> new SwingWorker<Object, Object>() {
>
> @Override
> protected Object doInBackground() throws Exception {
> System.out.println("SW Ran");
> throw new NullPointerException();
> }
> }.run();
> Only prints SW Ran.
> It's surprising this was not noticed.
SwingWorker is a RunnableFuture. The exception will be caught and stored
for retrieval via the Future methods. Trying add a get() to the above
and it will throw the ExecutionException:
Exception in thread "main" java.util.concurrent.ExecutionException:
java.lang.NullPointerException
at
java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at javax.swing.SwingWorker.get(SwingWorker.java:601)
at SW.main(SW.java:16)
Caused by: java.lang.NullPointerException
at SW$1.doInBackground(SW.java:11)
at javax.swing.SwingWorker$1.call(SwingWorker.java:296)
at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at javax.swing.SwingWorker.run(SwingWorker.java:335)
at SW.main(SW.java:14)
David Holmes
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic