建築プロジェクト
我々別として異常抽出コアロジック処理部jar
の他のモジュール参照の供給、プロジェクトの作成parent
アイテムがpom.xml
<依存性>
<! -ロンボク- >
<依存>
<groupIdを> org.projectlombok </ groupIdを>
<たartifactId>ロンボク</たartifactId>
<オプション> 真 </オプション>
</依存関係>
<! -测试模块依赖- >
<依存>
<groupIdを> org.springframework.boot </ groupIdを>
<たartifactId>春・ブート・スターターテスト</たartifactId>
<スコープ>テスト</スコープ>
</依存関係>
<! -ウェブ依赖- >
<依存>
<groupIdを> org.springframework.boot </のgroupId>
<たartifactId>春・ブート・スターター・ウェブ</たartifactId>/ groupIdを>
</依存関係>
</依存関係>
プロジェクトは他に作成された後.idea
、iml
、pom.xml
保持は、他のものは削除されます。
例外処理コアサブモジュール
/ ** * @author WGR - * @Create 2019年9月7日15時06分 * / パブリック クラス OssException 延びのRuntimeExceptionを実装シリアライズ{ プライベート 静的 最終的な ロングのserialVersionUID = 1L ; プライベートオブジェクトは、[] errFormatArr; 公共OssExceptionを(メッセージ文字列、...オブジェクトobj){ スーパー(メッセージ); この .errFormatArr = OBJ; } // 追加の2つのコンストラクタは、実用的なニーズのために、そう添加 公衆OssException(文字列メッセージ、Throwableの原因){ スーパー(メッセージ、原因)。 } 公共OssException(Throwableの原因){ スーパー(原因)。 } パブリックオブジェクト[] getErrFormatArr(){ リターンerrFormatArr。 } 公共 ボイドsetErrFormatArr(オブジェクト[] errFormatArr){ この .errFormatArr = errFormatArr。 } }
制服の定義は、結果を返します
SLF4J @ @ControllerAdvice パブリック クラスOssExceptionHandler { @ExceptionHandler(値 =例外。クラス) @ResponseBody 公共のModelAndViewハンドル(例外EX){ // 、ノーキャッチ例外を返すために提供さFastJsonJsonView FastJsonビュー使用 FastJsonJsonView =ビュー新新)(FastJsonJsonViewを。 結果R&LT = NULL ; IF(EX instanceofの OssException){ // 異常検出から 結果= M.getErrR(ex.getMessage()、((OssException)EX).getErrFormatArr())。 } 他 IF(EX のinstanceof MaxUploadSizeExceededException){ // スプリングファイルアップロードサイズ異常 結果が= M.getErrR( "exception.maxUploadSizeExceededException"、PropUtil.getInteger( "upload.maxSize" )); } そう IF(EX instanceofの DataAccessException){ // JDBC例外の春 = M.getErrR( "exception.dataAccessException"の結果;) } 他 { // 他の未知の異常が = M.keyErrR( "exception.other"の結果); } // 例外で開発プロセス印刷を情報は、製造プロセスがシャットダウンすることができ た場合(!result.getErrCode()= 60113)が{ // 20181225ログインセッションが印刷していない、有効期限が切れる ストリングスタックトレース= StackUtil.getStackTrace(EX); log.error( "----->" + スタックトレース); } // コンピュータ側、異常情報パッケージ20181128セキュリティテスト問題がクローズ詳細異常情報が必要 // IF(WebUtil.isComputer())result.setErrdetail(スタックトレース)を、 result.setErrdetail(ex.getMessage()); // 20190128異常情報参加するには、単純な必要性 view.setAttributesMap(結果を); 返す 新しい新しいのModelAndView(ビュー); } }