C#:声明,如果不满足条件则抛出异常

问题描述 投票:0回答:1

我最近开始将断言写入我的代码中,但是发现同时使用Debug.AssertTrace.Assert,如果不满足条件,则继续执行。是否有一个内置的等效项,当不满足条件时会抛出异常?还是我应该自己写?我想抛出一个异常,这样我就不会继续写出意外状态的东西。

编辑:我的代码有点像下面的代码。这在PUT请求中,因此我想更新现有资源(理想情况下,由ID标识,但如果以前进行部分保存,则由GUID标识)。如果保存新资源,那么我要确保提供了GUID。

public int Save(Guid? personGuid, Person person)
{
    if (person.Id > 0)
    {
        Update(person);
    }

    Trace.Assert(personGuid.HasValue);
    SaveToDb(personGuid, person);
}

注意:Define TRACE constant选项被选中。

c# exception assert assertion
1个回答
1
投票

通常的方法是在方法开始时检查前提条件,如果不满足则简单地抛出异常。如果许多方法之间存在相同的检查,则一种模式是添加“ ThrowIfInvalid”方法并在所有公共方法中调用它。

还有Code contracts可以帮助声明前提条件,如果前提条件失败则抛出。即

Contract.Requires<ArgumentNullException>(personGuid.HasValue, "...");
© www.soinside.com 2019 - 2024. All rights reserved.