2017-08-12 3 views
-8

特定のhttpステータスで例外をスローするにはどうすればよいですか? 403 Forbiddenステータスで例外を生成したい。 私はJAX-RSのライブラリを使用しますが、それだけでメッセージやステータスコードはまだ500特定のhttpステータスコードを持つ例外クラスをJavaで書く方法

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(); 
     } 
    } 

ExceptionMapperの詳細については、thisチュートリアルを参照してください。

+0

tks @Rishikesh DarandaleあなたはCustomErrorについて私に説明できますか?私はそれを混乱させます。 –

+0

@ThànhNguyễnDuy、 'CustomError'は、エラー情報を保持する独自のクラスになります。それが役に立たない場合は、独自の実装を使用することができます。 –

+0

私は試しましたが、例外がマッパークラスに一致しない理由はわかりません –

関連する問題