C# 用于多个可能异常的单个异常处理程序

C# 用于多个可能异常的单个异常处理程序,c#,exception,C#,Exception,我想检查C数据库调用的结果,以确保 返回的数据表不为空 DataTable的行数DataTable.rows.Count>1 如果这两个条件中的任何一个为真,我希望返回相同的异常,因为这种类型的结果不是预期的,应该总是有一些记录。有没有一种方法可以在不重复throw exception语句的情况下执行此操作 if (myDataTable != null) { if (myDataTable.Rows.Count > 0) { myRow = myDataTable.R

我想检查C数据库调用的结果,以确保

返回的数据表不为空 DataTable的行数DataTable.rows.Count>1 如果这两个条件中的任何一个为真,我希望返回相同的异常,因为这种类型的结果不是预期的,应该总是有一些记录。有没有一种方法可以在不重复throw exception语句的情况下执行此操作

if (myDataTable != null) 
{
  if (myDataTable.Rows.Count > 0) 
  {
    myRow = myDataTable.Rows[0];
  } 
  else 
  {
    throw new Exception("Problem obtaining data");
  }
} 
else 
{
  throw new Exception("Problem obtaining data");
}
出于我的目的,我不需要区分这些例外情况。

也许吧

if (myDataTable != null && myDataTable.Rows.Count > 0) 
{
    myRow = myDataTable.Rows[0];
} 
else 
{
    throw new Exception("Problem obtaining data");
}
您不需要嵌套if语句

if (myDataTable != null && myDataTable.Rows.Count > 0) 
{
    myRow = myDataTable.Rows[0];
} 
else 
{
    throw new Exception("Problem obtaining data");
}

您不需要嵌套if语句,只需编写:

if (myDataTable == null || myDataTable.Rows.Count == 0) 
{
    throw new Exception("Problem obtaining data");
} 
myRow = myDataTable.Rows[0];

你可以简单地写:

if (myDataTable == null || myDataTable.Rows.Count == 0) 
{
    throw new Exception("Problem obtaining data");
} 
myRow = myDataTable.Rows[0];

我认为空检查是反向的:我认为空检查是反向的:在C 6中,您可以编写if myDataTable?.Rows.Count>0,并避免将空检查标记为应答,因为我喜欢在else中有异常的想法。来自@sebastien的回答也是正确的。很抱歉必须选择一个。对于那些不熟悉的人来说,可能值得添加一个关于&&和| |短路评估的小解释。在C 6中,您可以编写if myDataTable?.Rows.Count>0,并避免将空复选标记为答案,因为我喜欢在else中包含异常的想法。来自@sebastien的回答也是正确的。很抱歉必须选择一个。对于那些不熟悉的人来说,可能值得添加一个关于&&&| | |短路评估的小解释。