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

本文关键字:处理 异常 操作 返回 执行 我可以 | 更新日期: 2023-09-27 18:34:31

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

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;

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

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

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

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

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;

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

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

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

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;