我在我的项目中使用自定义异常类
public class BadRequestException extends WebApplicationException {
private static final long serialVersionUID = 1L;
private String message;
public BadRequestException(String message) {
super();
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
我也创建了一个 Mapper 类..
public class BadRequestExceptionMapper implements ExceptionMapper<BadRequestException> {
public Response toResponse(BadRequestException brexec) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(brexec.getResponse().getEntity()).type(MediaType.APPLICATION_JSON).build();
}
}
我通过Servlet调用我的服务,异常是由它的一种方法引发的,但我无法在 Servlet 类中捕获它。我使用下面的代码来捕获异常。
try{
//Some Business logic then
service.path("restful").path("jwbservice/" + methodName + "/" + id).header("lid", lid).delete(String.class);
}
catch (BadRequestException ex) {
out.println(ex);
}
catch(Exception exe){
out.println(exe);
}
我在我的服务类中使用了这个代码的服务方法会抛出异常。
@DELETE
@Path("/deleteLink/{id}")
@Produces(MediaType.APPLICATION_JSON)
public String deleteLink(@PathParam("id") int id, @HeaderParam("lid") String lid) throws BadRequestException {
if (id<= 0) {
throw new BadRequestException("Required Parameter: id");
}
//Some Business Logic
}
我的服务抛出了BadRequestException但在 Servlet 中它会在BadRequestException Catch 块中捕获异常。任何人都可以知道我做错了什么。