最佳捕捉方式 "Sequence contains no elements"
Best way to catch "Sequence contains no elements"
如果 Single
没有找到您期望存在的元素,那么它会抛出一个 InvalidOperationException
。唯一的麻烦是其他事情也会导致此异常。例如,EF Code First 模型已过时。
我试图通过检查异常消息来缩小范围。然而,这可能会改变,我会 none 变得更聪明。有没有更好的方法来解决这个问题?
try
{
return DbSet.Single(filter);
}
catch (InvalidOperationException exc)
{
if (exc.Message == "Sequence contains no elements")
{
throw new UserNotFoundException();
}
throw;
}
改用.FirstOrDefault()
。然后检查结果是否为空。如果是,则未找到该用户。
如果 Single
没有找到您期望存在的元素,那么它会抛出一个 InvalidOperationException
。唯一的麻烦是其他事情也会导致此异常。例如,EF Code First 模型已过时。
我试图通过检查异常消息来缩小范围。然而,这可能会改变,我会 none 变得更聪明。有没有更好的方法来解决这个问题?
try
{
return DbSet.Single(filter);
}
catch (InvalidOperationException exc)
{
if (exc.Message == "Sequence contains no elements")
{
throw new UserNotFoundException();
}
throw;
}
改用.FirstOrDefault()
。然后检查结果是否为空。如果是,则未找到该用户。