1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
package java_integration.fixtures;
public class ExceptionRunner
{
public void doItNow( final Runnable runnable )
{
runnable.run();
}
public void doItThreaded( final Runnable runnable )
throws InterruptedException
{
Wrapper w = new Wrapper( runnable );
Thread t = new Thread( w );
t.start();
t.join();
if( w.caught != null ) {
throw w.caught;
}
}
class Wrapper implements Runnable
{
Wrapper( Runnable runnable )
{
_runnable = runnable;
}
public void run()
{
try {
_runnable.run();
}
catch( RuntimeException x ) {
caught = x;
}
}
public RuntimeException caught = null;
private Runnable _runnable = null;
}
}
|