我可以在返回时执行此操作以处理异常

时间:2012-05-16 07:49:08

标签: c# datatable return try-catch

在我的函数中,我返回一个由方法

返回的数据表

MyDatatable(sqlQuery, connection ),

但它可能会产生一些异常会导致错误,我可以做这样的事情

return  try {cmn.MyDatatable(qry, con)} catch(Exception ex){null};

我不想这样做

DataTable dt =null;
try{
dt = cmn.MyDatatable(qry, con);
}catch().....
return dt==null ? null :dt;

3 个答案:

答案 0 :(得分:5)

你的语法错误。你可以这样做:

try
{
    return cmd.MyDatatable(qry, con);
}
catch(Exception ex)
{
    return null;
}

虽然我怀疑你想吞下所有例外。

答案 1 :(得分:1)

IMO,最好的办法是:

{
  object l_oOutDatatable = null;
  try
  {
    oOutDatable = cmd.MyDatatable(qry, con);
  }
  catch(Exception e)
  {
    log.Message(e.ToString);
  }

  return l_oOutDatatable;
}

你必须始终管理异常,因为他们必须有充分的理由被抛出;)。更重要的是,在每种方法中都有一次回报是个好习惯。

在奖励中,您可以使用??关键字:如果该值为null,则此关键字用于返回值或其他内容。例如:c = a ?? b与此类似:c = (a!=null) ? a : b;

答案 2 :(得分:1)

您应该将异常一直返回给调用此代码的客户端。由客户端来处理异常。

请记住,您应该只捕获您希望它们发生的异常,例如尝试连接到数据库或将文件写入磁盘等。

您还应该使异常捕获尽可能具体,以捕获通常在获取数据集时发生的已知异常。

try
{
    return cmd.MyDatatable(qry, con);
}
catch(Exception ex)
{
    //Log exeption
    Throw ex
}

如果这只是一个检查来处理没有结果的null数据表,那么你应该测试它们是否为空或填充。如果它是应用程序返回空数据表的能力的一部分,那么这将是一个更好的解决方案。

var dataTableResult = cmd.MyDatatable(qry, con);
if ( dataTableResult != null)
{
    return dataTableResult;
}

return null;