0

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

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;
4

3 回答 3

5

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

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

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

于 2012-05-16T07:50:23.530 回答
1

IMO,最好的方法是这样做:

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

  return l_oOutDatatable;
}

您必须始终管理异常,因为它们必须有充分的理由被抛出;)。此外,在每种方法中都有一个返回被认为是一种好习惯。

另外,您可以使用??关键字:此关键字表示返回值或其他内容(如果它为空)。例如:c = a ?? b与此类似:c = (a!=null) ? a : b;

于 2012-05-16T07:54:24.227 回答
1

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

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

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

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

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

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

return null;
于 2012-05-16T07:56:22.883 回答