フレームワークは、投げ出されたり、いくつかのサードパーティ製のコンポーネントが例外をスロー。私たちは、単にそれに対応するエラーコード情報を知らないので、私たちは、ユーザーに特定のエラーコードとエラーメッセージを返す方法がありません。
私たちは、最初のいくつかの予測不可能な異常、定義されたエラーコードとエラーメッセージが表示された地図を定義します。私たちは、マップ内のエラーコードを見つけた場合、我々は見つからなかった場合、当社は、利用者に返すことができます。統一された異常なリターン99999
このエラーコード異常たちのカスタム。操作が失敗を返し例えば、これの管理者に連絡してください。
以下のために我々は対処するので、予測不可能な例外があります。
まず、どのような予測不可能な例外をシミュレートします。追加する方法、我々はデータのバックエンドのメソッドが呼び出される通らない体JSON
400エラーメッセージを返すために、この時点では、これが私たちの統一応答形式の情報ではありません。
これが私たちの統一された応答情報である
か、超過収益の99999のタイプ。いずれかの特定のコードを定義するには、これらの異常を置く
我々は異常のこの種を捕獲したい最初のプロジェクトを。例外のこのタイプ@ExceptionHandlerここException.classをキャプチャするために、内部エラー処理に基づきます。
しかし、ここで私たちは、異常コード未満を取得し
、我々は珍しい見えるものを入力して、ブレークポイントを追加するには、ここ
で休憩を。このキャプチャのうち、例外情報をコピーします。
異常なボディは、要求されたデータがないことを意味し
、当社の統一99999を返すような異常のために戦います。この列挙体はSERVER_ERRORの内部CommCodeある
たとえば、ここでは99999を返します
次のように返されたデータのような最終的な統一
定義されたマップ
いくつかの予測不可能な異常が定義されたエラーコードである
私たちは、エラーコードHttpMessageNotReadableExceptionにこのタイプを定義することができます。
CommonCodeこの列挙で定義された不正なパラメータ
ImmutableMapは彼らに一度、Googleのツールキットの地図データタイプでは、変更することはできません。これは、読み取り専用で
例外の前の表現型が、例外は常にのThrowableを継承します。続い例外コード
再定義されたオブジェクトビルダーは、ビルダーオブジェクトはImmutableMapを構築するために使用されます。注修飾子は保護され
、それを構築する方法を、次に?静的ブロックの内側に配置。ビルダーは、内部のデータマップを構築するために一度今のデータは、まだこのビルダーです。地図データは変更されません。
地図を構築するための方法を使用しbuilder.build
テスト
ここにブレークポイントを追加する
nullポインタ例外を
マップオブジェクトを受け取るために構築された例外を構築する必要がありますここ。
再びテストした
エラーコードとリターンを見つけること。
データを取りに行くための要求にこの要求。このエラーの私たちの誤差マップコレクションに追加されていないため、返されたエラーコードは99999です。
予測不可能な例外処理の上にそれが行われ。