我怎么能在这里使用try catch函数?
public DataTable BindRole()
{
Database _database = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = _database.GetSqlStringCommand(QMROLE.FetchData);
DataSet _ds = _database.ExecuteDataSet(dbCommand);
return _ds.Tables[0];
}
感谢。
答案 0 :(得分:2)
public DataTable BindRole()
{
try
{
Database _database = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = _database.GetSqlStringCommand(QMROLE.FetchData);
DataSet _ds = _database.ExecuteDataSet(dbCommand);
return _ds.Tables[0];
}
catch (Exception ex)
{
return null;
}
}
答案 1 :(得分:1)
当一个函数返回任何值然后在捕获异常后返回null,这将有用,如下所示。
public DataTable BindRole()
{
try
{
Database _database = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = _database.GetSqlStringCommand(QMROLE.FetchData);
DataSet _ds = _database.ExecuteDataSet(dbCommand);
return _ds.Tables[0];
}
catch
{
return null;
}
}
现在使用这种方法。
Datatable resultantTable = BindRole();
if ( resultantTable != null )
{
// Do what you want with this datatable
}
答案 2 :(得分:1)
我更愿意接受以下内容。您对实现IDisposable接口的对象使用'using'。这确保了,在使用之后,并且在出错时,他们的资源被释放。我不知道Database对象,但如果它也实现了IDisposable,那么使用'using',否则只需使用周围的try-catch,并在finally中执行清理任务。 我通常选择在方法的顶部创建返回变量及其默认值,并在结尾处返回它。所以你总是在最后获得变量的实际状态。
public DataTable BindRole()
{
DataTable dataTable = new DataTable();
try
{
Database _database = DatabaseFactory.CreateDatabase();
using (DbCommand dbCommand = _database.GetSqlStringCommand(QMROLE.FetchData))
{
using (DataSet _ds = _database.ExecuteDataSet(dbCommand))
{
dataTable = _ds.Tables[0];
}
}
}
catch
{
}
finally
{
// perform cleanup
}
return dataTable;
}
答案 3 :(得分:0)
使用“throw或”返回null“或返回一个新的空对象。我建议抛出,除了你在catchblock中处理异常(fe log it)。不要捕获异常并重新抛出它(除非你有你的原因)
catch (Exception error) { throw error;}
导致在这种情况下原始堆栈跟踪丢失。
public DataTable BindRole()
{
try
{
Database _database = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = _database.GetSqlStringCommand(QMROLE.FetchData);
DataSet _ds = _database.ExecuteDataSet(dbCommand);
return _ds.Tables[0];
}
catch
{
throw;
}
}
答案 4 :(得分:0)
你的问题很模糊。您可以将整个事物包装在TryCatch中。或个别命令,视您的需要而定。
或者你是否问如果其中一个命令出现错误,应该在catch中做些什么来清理?
如果您给我们一个关于您要实现的目标的提示,除了捕获错误(可以通过将try / catch放在整个块之外),请告诉我们。
答案 5 :(得分:0)
你可以这样使用
public DataTable BindRole()
{
DataSet _ds = new DataSet();
try
{
Database _database = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = _database.GetSqlStringCommand(QMROLE.FetchData);
DataSet _ds = _database.ExecuteDataSet(dbCommand);
return _ds.Tables[0];
}
catch(Exeption Ex)
{
// either trow the exception or
// return an empty datatable here
return new DataTable();
}
}
在调用函数时检查空数据表是否有错误。