プロジェクトで以下のカスタム例外クラスを使用しています
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();
}
}
サーブレットを介してサービスを呼び出していますが、そのメソッドの 1 つによって例外がスローされますが、サーブレット クラスでキャッチできません。以下のコードを使用して例外をキャッチしました。
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をスローしますが、サーブレットではBadRequestException Catchブロックではなく例外キャッチになります。誰でも私が間違っていることを知ることができますか?