【GeneXus】ぼくのかんがえたさいきょうのエラーハンドラー

タイトル適当です。全然最強じゃないです。

参考 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

↑のコード使う場合は自己責任で宜しくお願いします。

以上

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください