タイトル適当です。全然最強じゃないです。
参考
error_handler ルールwiki.genexus.jp
昔の記事を発掘しました。
そしていつもだいたい調べなおすのでちゃんとメモ。
ErrorHandlerProcedure – Rules
Parm(
in:&PI_Pgmname
,in:&PI_Pgmdesc
,in:&PI_Err
,in:&PI_GxDBErr
,in:&PI_GxDbSqlState
,in:&PI_GxDBTxt
,in:&PI_GxOper
,in:&PI_GxErrTbl
);
ErrorHandlerProcedure – Sauce
// エラー情報文字列の作成
&W_ErrMsg.SetEmpty()
&W_ErrMsg += &piPgmname + !":" + &PI_Pgmdesc + NewLine()
&W_ErrMsg += !"Error:" + &PI_Err.ToString().Trim() + NewLine()
If &PI_Err >= 500
&W_ErrMsg += !"DB Error:" + &PI_GxDBErr.ToString().Trim() + NewLine()
&W_ErrMsg += !"DB Text:" + &PI_GxDBTxt.Trim() + NewLine()
Endif
&W_ErrMsg += !"DB SQL State:" + &PI_GxDbSqlState.Trim() + NewLine()
&W_ErrMsg += !"Operator:" + &PI_GxOper.Trim() + NewLine()
&W_ErrMsg += !"Error Table SQL:" + &PI_GxErrTbl.Trim() + NewLine()
// コンソールに文字列を出力
MSG(&W_ErrMsg, status)
// ログを出力
Log.Error(&W_ErrMsg, &PI_Pgmname)
Return
呼び出し側
適当なProcedure – Rules
Error_Handler('ErrorHandler');
適当なProcedure – Sauce
Sub 'ErrorHandler'
&gxErrOpt = 0
ErrorHandlerProcedure.Call(&Pgmname,&Pgmdesc,&Err,&GxDBErr,&GxDbSqlState,&GxDBTxt,&GxOper,&GxErrTbl)
EndSub
まとめ
別に何も特別なことはしてないけど、さらに呼び出し元にステース書いたり、
ErrorHandlerProcedure内でもうすこし何か対応するのも手だと思います。
けっしてこれがベストプラクティスでは無いです。
なので全然最強じゃないですw
↑のコード使う場合は自己責任で宜しくお願いします。
以上
oquitaというドメイン Wwwwww