0

私はこれを次のVB6コード(他の誰かによって書かれた)でリファクタリングしようとしていました。

Public Function GetValue(ID As Long) As Boolean
    On Error GoTo eh

    '' ... DAL Logic...

eh_Exit:
  On Error GoTo 0
  Exit Function
eh:
  Resume eh_Exit
End Function

原作者の意図はレーベルに何だったと思いますehか?

たぶん「えっ、何かあったの?」…

今のように考えなくても読めるようにしたいと思います...

4

4 に答える 4

13

エラーハンドラ?なぜそこにエラー処理がないのかわからない。

于 2009-04-22T18:28:35.060 に答える
4

"*** E *** rror *** H *** andler"

私の最初のCの仕事では、すべての関数の下部に「err_exit」というラベルがありました。ローカルで処理できなかったエラー状態が検出され、「if(error ...)gotoerr_exit;」で処理されました。また、すべての関数は、良好なステータスの場合は0を返し、エラーの場合は-1を返しました。

理論的には、err_exitはクリーンアップを行うためにありましたが、実際には、ほとんどの関数は次のように終了しました。

  return 0;
err_exit:
  return -1;
于 2009-04-22T18:28:45.167 に答える
0

「おもしろい」デザイン。デバッグ中にブレークポイントを設定する場所のように見えますが、創造的に混乱します。

于 2009-04-22T18:31:17.470 に答える
0

関数のコードをただ終了させ、エラー処理ロジックをスキップする必要がなく、関数の作成者が Exit Function ステートメントを持っていない場合は正常に終了できるパターンであると推測する危険があります。

したがって、関数内の残りのコードを変更することなく、eh_Exit から任意の関数にすべてを貼り付けることができます。

于 2009-04-22T18:36:36.427 に答える