我用 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。
这是“正常”行为吗?这似乎很奇怪。