users@jersey.java.net

[Jersey] WebApplicationException strangeness

From: Mike Summers <msummers57_at_gmail.com>
Date: Fri, 27 Apr 2012 13:36:10 -0500

I've extended WebApplicationException with an UnauthorizedException:
   public class UnauthorizedException extends WebApplicationException {

My REST classes extend a base class that implements the authCheck, a
subclass method:
 try{
   authCheck();
   RecordingList recordings = CODIRecording.getRecordings(type, timeframe);
   return Response.ok().entity(recordings).build();
 }catch(WebApplicationException e){
   throw e; // Results in 500
   throw new UnauthorizedException(); // Results in 401
 }

When the authCheck fails it throws UnauthorizedException. If the subclass
method doesn't have the catch/try (the exception just propagates out from
authCheck) or if it re-throws the exception the client receives a 500.

If the method's catch throws a NEW UnauthorizedException the client receives
a 401 as expected.

Is this "normal" behavior? It seems odd.