4D v16.3ON ERR CALL |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
ON ERR CALL
ON ERR CALL
ON ERR CALL コマンドは、エラー検知用のメソッドとしてerrorMethodで渡した名前のプロジェクトメソッドをインストールします。このプロジェクトメソッドはエラー処理メソッドまたはエラーキャッチメソッドと呼ばれます。 エラー処理プロジェクトメソッドのインストール後は、エラーが発生するたびに4Dがこのメソッドを呼び出します。 このコマンドのスコープはカレントプロセスです。1つのプロセスには1度に1つのエラー処理メソッドだけを使用できますが、異なるプロセス間では、異なるエラー処理メソッドを持つことができます。 注:
エラーの検知を中止するには、errorMethodに空の文字列を指定して再度ON ERR CALL コマンドをコールします。 エラーはシステム変数Errorの値で判別します。このシステム変数にはエラーコードが納められます。このマニュアルの付録に エラーコード が記載されています。詳細はシンタックスエラー (1 -> 81)を参照してください。システム変数Errorの値はエラー処理メソッド内のみで有効です。エラーの原因となったメソッド内でこのエラーコードが必要であれば、システム変数Errorを独自のプロセス変数にコピーしてください。またError method、Error lineとError formulaシステム変数にはそれぞれ、エラーが発生したメソッドの名前とその行番号、フォーミュラのテキストが格納されます (Error, Error method, Error line参照)。 GET LAST ERROR STACK コマンドを使用する事で割り込みの発生源のエラーシークエンス(例えばエラー"スタック"など)を取得する事ができます。 エラー処理メソッドは適切な方法でエラーを管理、またはユーザに対してエラーメッセージを表示します。エラーは以下で実行されたプロセス中に生成されます:
実行を中断するには、ABORT コマンドを使用できます。エラー処理メソッドでABORT コマンドを使用しない場合、4Dは割り込みをかけたメソッドに制御を戻し、メソッドの実行を続けます。エラーをリカバーできないときにABORT コマンドを使用します。 エラー処理メソッド自体でエラーが発生した場合は、4Dがエラー管理を引き継ぎます。したがって、エラー処理メソッドでエラーが発生しないように十分注意してください。また、エラー処理メソッドではON ERR CALL コマンドを使用することはできません。 ON ERR CALL は通常On startupデータベースメソッドから呼び出され、このアプリケーションのエラーを処理します。またON ERR CALL はメソッドの開始時に置かれて、そのメソッド特有のエラーを処理します。 次のプロジェクトメソッドは、引数で渡された名前のドキュメンを作成します。ドキュメントが作成できない場合、このプロジェクトメソッドは0またはエラーコードを返します: ` Create doc プロジェクトメソッド IO ERROR HANDLERプロジェクトメソッドは以下のようになります: ` IO ERROR HANDLER project method 現在実行中のメソッド内でエラーコードの結果を取得するために、プロセス変数gErrorを使用している点に注意してください。データベースにこれらのメソッドを作成したら、次のようなコードを使用します: ` ... 配列とメモリの例題参照 複雑な一連の処理を実装中に、各種サブルーチンで異なるエラー処理メソッドが必要となる場合があります。プロセスごとにいちどに1つのエラー処理メソッドしか持つことができないため、次の2通りの方法から対応策を選択することになります: プロセスの実行を開始する時点で配列を初期化する必要があります: ` プロセスメソッドの最初に配列の初期化をするのを忘れないように。 これはカスタマイズしたON ERROR CALLメソッドです: ` ON ERROR CALL project method 次のように呼び出します: gError:=0 次のエラー処理メソッドはユーザによる割り込みを無視し、エラーテキストを表示します: //Show_errors_only プロジェクトメソッド
参照
|
プロパティ
プロダクト: 4D 履歴
初出: < 4D v6 ARTICLE USAGE
ランゲージリファレンス ( 4D v16) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||