我使用UnauthorizedException扩展了WebApplicationException:
public class UnauthorizedException extends WebApplicationException {
我的REST类扩展了一个实现authCheck的基类,这是一个子类方法:
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
}
当authCheck失败时,它会抛出UnauthorizedException。如果子类方法没有catch / try(异常只是从authCheck传播出来),或者如果它重新抛出异常,则客户端会收到500.
如果方法的catch抛出 NEW UnauthorizedException,则客户端会按预期收到401。
这是“正常”行为吗?这看起来很奇怪。
答案 0 :(得分:0)
我猜你实际上在那里捕获的不是UnauthorizedException,而是其他一些WebApplicationException。你试过调试器吗?或者只需在catch子句中执行e.printStackTrace()即可。