現象
OutSystemsで作成した画面を操作していたところ、画面が真っ白になり、
「There was an error processing your request. Please try again later…」
とだけ表示されたという連絡があった。
Service CenterのMonitoring > Errorには、「Global」Moduleからのエラーが記録されている。
原因
発生した例外を処理する、Handlerが設定されていません。
通常、作成したアプリケーションには、デフォルトでGlobal Exception Handlerが設定されているのですが、何らかの理由で外されてしまった可能性があります。
背景
例外は、発生した場所で処理されなかった場合、呼び出し元Actionをたどっていきます。
例:あるActionで例外が発生し、かつAction内には、発生した例外に対するHandlerがない場合、次に呼び出し元ActionでHandlerを探していきます
最初に処理を開始したAction(Screen Actionなど)でもHandlerが見つからなかった場合、Screen Actionなら、所属するUI FlowのOn Exception ActionでHandlerを探します。
On Exception Actionは、UI Flowを右クリックし、「Add On Exception Action」を選択すると作成できます。
On Exception ActionでもHandlerが見つからなかった場合に、Global Exception Handlerで処理します。普通はここに、All Exceptionに対するHandlerがあって、専用のエラー画面に遷移するなどして対応します。
公式ドキュメントに説明があります:例外処理の仕組み
つまり、エラーを発生させたFlow、On Exception Action内にHandlerがなく、Global Exception Handlerの設定を(None)にするなどして外してしまったため、例外が処理されずに、システムで拾われ、「There was an error processing your request. Please try again later…」の表示に至った、という流れです。
なお、Screen ActionのFlow内でHandleしておくと、Service Centerのログは空欄になります。