diff --git a/src/main/java/com/github/davidcarboni/restolino/api/Api.java b/src/main/java/com/github/davidcarboni/restolino/api/Api.java
index <HASH>..<HASH> 100644
--- a/src/main/java/com/github/davidcarboni/restolino/api/Api.java
+++ b/src/main/java/com/github/davidcarboni/restolino/api/Api.java
@@ -2,6 +2,7 @@ package com.github.davidcarboni.restolino.api;
 
 import java.io.IOException;
 import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
@@ -413,7 +414,9 @@ public class Api {
 
 			// Chances are the exception we've actually caught is the reflection
 			// one from Method.invoke(...)
-			Throwable caught = t.getCause();
+			Throwable caught = t;
+			if (InvocationTargetException.class.isAssignableFrom(t.getClass()))
+				caught = t.getCause();
 			handleError(request, response, requestHandler, caught);
 		}
Experimenting with more subtle error handling.