Is there a better way to throw this exception? (original) (raw)
Steven Schlansker stevenschlansker at gmail.com
Thu Jun 6 15:35:56 UTC 2013
- Previous message: Is there a better way to throw this exception?
- Next message: Is there a better way to throw this exception?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Jun 6, 2013, at 2:42 AM, Weijun Wang <weijun.wang at oracle.com> wrote:
Hi All
I have a method that could throw two kinds of checked exceptions and possibly other unchecked ones: void once() throws One, Two Now I have a wrapper method that calls once() for multiple times, and want to throw the first exception if all fails. Now it looks like void multiple() throws One, Two { Exception saved = null; for (all chances) { try { once(); return; } catch (Exception e) { if (saved != null) saved = e; } } if (saved instanceof One) { throw (One)saved; } else if (saved instanceof One) { throw (Two)saved; } else if (saved instanceof RuntimeException) { throw (RuntimeException)saved; } else { // Not likely, but I've already wrote so many lines. throw new RuntimeException(saved); } } Is there any way I can make it shorter?
If you use / are willing to use Guava, you can replace all of the exception if clauses with:
void multiple() throws One, Two { for (…) { … } Throwables.propagateIfPossible(saved, One.class, Two.class); throw Throwables.propagate(saved); }
- Previous message: Is there a better way to throw this exception?
- Next message: Is there a better way to throw this exception?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]