在框架设计指南手册中有一章关于异常,他们讨论基于返回值的错误报告和基于异常的错误报告,以及我们在像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;
}
答案 0 :(得分: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.
}
答案 1 :(得分:0)
对于异常处理存在(至少)与编码员一样多的意见,但从一开始就有一个好的经验法则是在特殊情况下应该抛出异常。
那么,更新失败是否异常?