org.cojen.util
Class ThrowUnchecked

java.lang.Object
  extended by org.cojen.util.ThrowUnchecked

public abstract class ThrowUnchecked
extends Object

Allows exceptions to be thrown which aren't declared to be thrown. Use of this technique can cause confusion since it violates the Java language rules for undeclared checked exceptions. For this reason, this class should not be used except under special circumstances such as to work around compiler bugs. An exception can be made, if calling any of the fireDeclared methods and the set of declared types matches what the caller is allowed to throw.

Example:

 public <E extends Throwable> void someMethod(E exception) throws E {
     ...

     // Apparent compiler bug sometimes disallows this. Doesn't appear to
     // show up when compiling source files individually.

     //throw exception;

     // Throw it this way instead, and compiler doesn't know.
     ThrowUnchecked.fire(exception);
 }
 

Since:
2.1
Author:
Brian S O'Neill

Constructor Summary
protected ThrowUnchecked()
           
 
Method Summary
protected abstract  void doFire(Throwable t)
           
static void fire(Throwable t)
          Throws the given exception, even though it may be checked.
static void fireCause(Throwable t)
          Throws the cause of the given exception, even though it may be checked.
static void fireDeclared(Throwable t, Class... declaredTypes)
          Throws the given exception if it is unchecked or an instance of any of the given declared types.
static void fireDeclaredCause(Throwable t, Class... declaredTypes)
          Throws the cause of the given exception if it is unchecked or an instance of any of the given declared types.
static void fireDeclaredRootCause(Throwable t, Class... declaredTypes)
          Throws the root cause of the given exception if it is unchecked or an instance of any of the given declared types.
static void fireFirstDeclared(Throwable t, Class... declaredTypes)
          Throws the either the original exception or the first found cause if it matches one of the given declared types or is unchecked.
static void fireFirstDeclaredCause(Throwable t, Class... declaredTypes)
          Throws the first found cause that matches one of the given declared types or is unchecked.
static void fireRootCause(Throwable t)
          Throws the root cause of the given exception, even though it may be checked.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ThrowUnchecked

protected ThrowUnchecked()
Method Detail

fire

public static void fire(Throwable t)
Throws the given exception, even though it may be checked. This method only returns normally if the exception is null.

Parameters:
t - exception to throw

fireDeclared

public static void fireDeclared(Throwable t,
                                Class... declaredTypes)
Throws the given exception if it is unchecked or an instance of any of the given declared types. Otherwise, it is thrown as an UndeclaredThrowableException. This method only returns normally if the exception is null.

Parameters:
t - exception to throw
declaredTypes - if exception is checked and is not an instance of any of these types, then it is thrown as an UndeclaredThrowableException.

fireFirstDeclared

public static void fireFirstDeclared(Throwable t,
                                     Class... declaredTypes)
Throws the either the original exception or the first found cause if it matches one of the given declared types or is unchecked. Otherwise, the original exception is thrown as an UndeclaredThrowableException. This method only returns normally if the exception is null.

Parameters:
t - exception whose cause is to be thrown
declaredTypes - if exception is checked and is not an instance of any of these types, then it is thrown as an UndeclaredThrowableException.

fireCause

public static void fireCause(Throwable t)
Throws the cause of the given exception, even though it may be checked. If the cause is null, then the original exception is thrown. This method only returns normally if the exception is null.

Parameters:
t - exception whose cause is to be thrown

fireDeclaredCause

public static void fireDeclaredCause(Throwable t,
                                     Class... declaredTypes)
Throws the cause of the given exception if it is unchecked or an instance of any of the given declared types. Otherwise, it is thrown as an UndeclaredThrowableException. If the cause is null, then the original exception is thrown. This method only returns normally if the exception is null.

Parameters:
t - exception whose cause is to be thrown
declaredTypes - if exception is checked and is not an instance of any of these types, then it is thrown as an UndeclaredThrowableException.

fireFirstDeclaredCause

public static void fireFirstDeclaredCause(Throwable t,
                                          Class... declaredTypes)
Throws the first found cause that matches one of the given declared types or is unchecked. Otherwise, the immediate cause is thrown as an UndeclaredThrowableException. If the immediate cause is null, then the original exception is thrown. This method only returns normally if the exception is null.

Parameters:
t - exception whose cause is to be thrown
declaredTypes - if exception is checked and is not an instance of any of these types, then it is thrown as an UndeclaredThrowableException.

fireRootCause

public static void fireRootCause(Throwable t)
Throws the root cause of the given exception, even though it may be checked. If the root cause is null, then the original exception is thrown. This method only returns normally if the exception is null.

Parameters:
t - exception whose root cause is to be thrown

fireDeclaredRootCause

public static void fireDeclaredRootCause(Throwable t,
                                         Class... declaredTypes)
Throws the root cause of the given exception if it is unchecked or an instance of any of the given declared types. Otherwise, it is thrown as an UndeclaredThrowableException. If the root cause is null, then the original exception is thrown. This method only returns normally if the exception is null.

Parameters:
t - exception whose root cause is to be thrown
declaredTypes - if exception is checked and is not an instance of any of these types, then it is thrown as an UndeclaredThrowableException.

doFire

protected abstract void doFire(Throwable t)


Copyright © 2004-2008 Brian S O'Neill. All Rights Reserved.