2017-08-12 28 views
-8

如何以特定的http狀態拋出異常?我想用403 Forbidden狀態生成異常。 我用JAX-RS庫,但它只是改變的消息和狀態代碼,仍然有500如何在JAVA中使用特定的http狀態代碼編寫異常類

if (countRequest > 10) { 
    throw new WebApplicationException(Response.Status.FORBIDDEN); 
} 

在郵遞員輸出:

{ 
    "timestamp": 1502582674498, 
    "status": 500, 
    "error": "Internal Server Error", 
    "exception": "javax.ws.rs.WebApplicationException", 
    "message": "HTTP 403 Forbidden", 
    "path": "/timesheets/late/61/cancel" 
} 
+1

你應該告訴我們你已經嘗試了什麼,你有什麼? –

+0

異常沒有狀態。你可能在談論'jax-rs'這不是我應該猜到的。請嘗試提出更明確的問題,以表明您真正想要什麼,以及您嘗試了些什麼。 – Oleg

+0

您可以在您創建的自定義課程中添加所需的任何屬性。你試過什麼,它以什麼方式「不起作用」? – David

回答

0

您可以ExceptionMapper如下做到這一點:

@Provider 
    public class CustomExceptionMapper implements ExceptionMapper<WebApplicationException> { 
     @Override public Response toResponse(WebApplicationException weException) { 
      // grab the response from exception 
      Response response = weException.getResponse(); 
      // create error object/message as you like 
      CustomError error = ...; 
      // return the custom error 
      return Response.status(response.getStatus()).entity(error).build(); 
     } 
    } 

您可以參考的詳細使用ExceptionMapperthis教程。

+0

tks @Rishikesh Darandale你能向我解釋一下CustomError嗎?我對此感到困惑。 –

+0

@ThànhNguyễnDuy,'CustomError'將是你自己的類,它包含錯誤信息。如果這對你沒有幫助,那麼你可以使用你自己的實現。 –

+0

我試過了,但我不知道爲什麼異常與映射類不匹配 –