問題タブ [handlerexceptionresolver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
8687 参照

spring - MaxUploadSizeExceededException は、Spring で例外処理メソッドを呼び出さない

Spring 3.2.0 を使用しています。この回答によると、注釈付きコントローラーに同じメソッドがあり、次のHandlerExceptionResolverようなインターフェイスを実装しています。

Spring 構成には以下が含まれます。

ファイルサイズを超えると、前述のメソッドが呼び出され、例外が自動的に処理されるはずですが、まったく発生しません。resolveException()例外が発生しても、メソッドが呼び出されることはありません。この例外を処理する方法は何ですか? 何か不足していますか?

ここにも 同じ こと が 明記 さ れて い る. 私の場合、なぜうまくいかないのかわかりません。


次のアプローチを試しました@ControllerAdviceが、どちらもうまくいきませんでした。

私も詳細を入れようとしました - Exception

どのような場合でも、このメソッドResponseEntity()は呼び出されません。


一般に、可能であれば、コントローラー ベース (コントローラー レベル) ごとにこの例外を処理したいと考えています。このため、1 つの@ExceptionHandler注釈付きメソッドは、アプリケーション全体に対してグローバルではなく、その特定のコントローラーに対してのみアクティブにする必要があります。これは、私のアプリケーションにはファイルのアップロードを処理する Web ページがいくつかしかないためです。この例外が発生した場合、現在のページにわかりやすいエラー メッセージを表示し、ファイルで構成されたエラー ページにリダイレクトしないようにしweb.xmlます。これが実現可能ではない場合でも、この例外は、今述べたカスタム要件なしでとにかく処理する必要があります。

どちらのアプローチも私にとってはうまくいきませんでした。私が見つけたこの例外の処理については、これ以上何もありません。XML ファイルなどのどこかに追加の構成が必要ですか?


例外がスローされた後に得られるものは、次のスナップショットで見ることができます。

ここに画像の説明を入力

0 投票する
1 に答える
357 参照

java - Spring HandlerExceptionResolver でストラック トレースの出力を抑制する

私はこのハンドラを持っています:

ログ Debug-Level が有効になっていない場合、スタック トレースを jvm sterr に出力したくありませんが、このハンドラの直後にスタック トレースが出力されるようにしています...理由を教えてください。

デバッグ テスト中に log.isDebugEnabled() が正しく false であることを確認しました

0 投票する
1 に答える
7080 参照

java - throwExceptionIfNoHandlerFound を設定しても、Spring 4.2 では効果がありません。*

設定throwExceptionIfNoHandlerFoundは Spring 4.2.2 では効果がありません。すべての応答を JSON として送信する必要があるため、これは私にとって重要です。

私はAppInitializerthrowExceptionIfNoHandlerFoundでそのように設定しています:

DispatcherServlet#noHandlerFoundが期待どおりに例外をスローするため、機能しているようです。

しかし、その後(非常に紛らわしいです!)すべての例外がキャッチされ、エラービューに解決されます。NoHandlerFoundExceptionそのため、 Spring を使用して処理することはできません。@ExceptionHandler

質問:

確かに、これは非常に便利で便利な機能ですが、404 エラーを検出して、デフォルトの HTML エラー ページの代わりにカスタム応答を送信する方法はありますか?

0 投票する
0 に答える
233 参照

spring - Spring: AccessDecisionManager からスローされた例外をキャッチ - コントローラーからではありません

MVC (4.2.4) およびセキュリティ (4.0.3) での Spring (4.2.4) の使用。AccessDecisionManager を実装しましたが、決定メソッド内から例外をスローしています。

SessionCompanyNotRoleTableCompanyException" " も. もキャッチできませんAccessDeniedException。グローバル例外ハンドラーを使用してみました:

次のような ExceptionResolver クラスも作成しました。

...そして、私の web-config-class でそれらを次のように初期化します:

これらは機能します。つまり、例外は、コントローラーからスローされた場合にのみキャプチャされます。しかし、の私decideの方法からではありませんAccessDecisionManager

コントローラーの外側 (前) でこれらをキャッチできるものをどのように実装する必要がありますか?

編集SessionCompanyNotRoleTableCompanyException(定義を表示するために を追加):

0 投票する
1 に答える
284 参照

spring - HandlerExceptionResolver、MaxUploadSizeExceededException - アップロードが続行され、エラーがすぐに返されない

Spring 3.1.1 を使用しています。ファイルアップロード機能があり、ファイルサイズ制限を処理するために HandlerExceptionResolver を実装しました。「maxUploadSize」属性を使用して、Spring MVC xml でサイズを構成しました。私のアプリケーションは、open id で spring security を使用しています。

そのアップロードコントローラーの resolveException() で以下のコードを使用しています。RestResponse は、エラー メッセージとステータスを含む pojo です。

ログから、resolveException() が呼び出されていることがわかりますが、json 応答は残りの API クライアント/ブラウザーに表示されません。ログに例外が表示されます (最大アップロード サイズの 10485760 バイトを超えました。ネストされた例外は org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: 要求は拒否されました。そのサイズ (30611515) が構成された最大値 (10485760) を超えているためです)。アップロードの直後ですが、アップロードは引き続き続行され、しばらくすると json エラー メッセージ (上記で入手可能) がブラウザーに表示されます。

stackoverflow やその他のポータルでこの問題を確認しましたが、表示されない理由や応答が UI に返される理由がわかりませんでした。