在我的函数中,我返回一个由方法
返回的数据表 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;
答案 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;