0

Framework Design guideline book には例外に関する章があり、戻り値ベースのエラー報告と例外ベースのエラー報告、および C# のような OO 言語では戻り値ベースのエラー報告を避けて使用する必要があるという事実について説明しています。例外。そのことを念頭に置いて、8 年前に Visual Basic で記述され、昨年自動ツールで C# に変換されたコードを見ていました。

ここに私が見ている方法があります。その本のアドバイスがそのような方法に適用されるかどうか疑問に思っていました。もしそうなら、この方法を書き直すためのより良いアプローチは何でしょうか?

public int Update(CaseStep oCaseStepIn)
{
    int result = 0;
    //Update the master object with the passed in object

    result = UCommonIndep.gnUPDATE_FAILED;
    if (Validate(oCaseStepIn) == UCommonIndep.gnVALIDATE_FAILED)
    {
        return result;
    }

    CaseStep oCaseStep = get_ItemByObjectKey(oCaseStepIn.CopyOfObjectKey);
    if (oCaseStep == null)
    {
        return result;
    }   

    return result;
}
4

2 に答える 2

1

可能であれば、特定の例外をスローします。この場合、戻り値は必要ありません。

public void Update(CaseStep oCaseStepIn)
{
    //Update the master object with the passed in object
    if (Validate(oCaseStepIn) == UCommonIndep.gnVALIDATE_FAILED)
        throw new ValidationFailedUpdateException();

    CaseStep oCaseStep = get_ItemByObjectKey(oCaseStepIn.CopyOfObjectKey);
    if (oCaseStep == null)
        throw new KeyObjectNotFoundUpdateException();

    if (oCaseStep.Update(oCaseStepIn) != UCommonIndep.gnUPDATE_SUCCESSFUL)
        throw new UpdateFailedException();

    //*******************************
    //FYI - Insert code here to update any Key values that might have changed.
}
  • UpdateFailedException は例外を拡張します
  • ValidationFailedUpdateException は UpdateFailedException を拡張します
  • KeyObjectNotFoundUpdateException は UpdateFailedException を拡張します
于 2012-04-20T14:34:26.727 に答える
0

例外処理については (少なくとも) コーダーの数と同じ数の意見がありますが、例外的な状況では例外をスローする必要があるという経験則から始めるとよいでしょう。

では、更新の失敗は例外的な出来事なのでしょうか?

于 2012-04-20T14:35:19.043 に答える