0

在框架设计指南书中有一章是关于异常的,他们讨论了基于返回值的错误报告和基于异常的错误报告,以及我们在像 C# 这样的 OO 语言中应该避免基于返回值的错误报告和使用例外。考虑到这一点,我查看了八年前用 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 回答