Good question Martin,
We added the FireAsyncException because users don't have hook on the pipeline created internally by the vent dispatcher. If you call hand or whenComplete on the completionStage returned by fireAsync() you'll get the FireAsyncException.
If you choose to continue the pipeline without checking the outcome of fireAsync you'll get the CompletionException wrapping the FireAsyncException.
Now if you have suggestion to handle this differently, your input is welcome. The EDR is here for that ;).
Antoine
Hi all,
the CDI 2.0 EDR1, "10.5.1. Handling multiple exceptions thrown during an
asynchronous event" currently states:
"If an event is asynchronous, and an exception is thrown by any of its
notified observers, the CompletionStage returned by fireAsync will
complete exceptionally with FireAsyncException exception."
And there's also an example of handle() method with lambda which gets
FireAsyncException passed as an param. This looks good from the user
point of view.
However, what should happen if I use e.g. thenAccept() method? The
CompletionStage API is clear:
"Two method forms support processing whether the triggering... In all
other cases, if a stage's computation terminates abruptly with an
(unchecked) exception or error, then all dependent stages requiring its
completion complete exceptionally as well, with a CompletionException
holding the exception as its cause...". In other words,
myEvent.fireAsync(...).thenAccept(...).exceptionally(...) should receive
CompletionException and not FireAsyncException.
This seems a bit inconsistent to me. Am I missing something?
--
Martin Kouba
Software Engineer
Red Hat, Czech Republic
_______________________________________________
cdi-dev mailing list
cdi-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/cdi-dev
Note that for all code provided on this list, the provider licenses the code under the Apache License, Version 2 (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas provided on this list, the provider waives all patent and other intellectual property rights inherent in such information.