有返回值的函数中try catch使用问题?

xiaocui2007 2011-05-18 09:22:44
调用函数出现异常时怎样终止该操作?

//返回查询到的数据集
public static DataSet ExecuteQuery(string strSQL)
{
try
{
DataSet ds = new DataSet();
String strConnect = "Data Source=XIAOCUI2007\\MSSQLSERVER08;Initial Catalog=WaterSediDyMonit_YellowRiver;Integrated Security=SSPI";
SqlConnection conn = new SqlConnection(strConnect);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
da.Fill(ds);
conn.Close();
return ds;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "警告!");
//终止该操作怎么写?但是还要写返回值怎么办?这个函数必须有返回值
}

//调用
private void btExecuteQuery_Click(object sender, EventArgs e)
{
DataSet ds = ExecuteQuery(strSQL);
//操作
}
...全文
434 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
缪军 2011-05-18
  • 打赏
  • 举报
回复
如果楼主不想在事件边界处理异常,
楼主也可以在form边界或者app边界处理异常,
可以参考
http://social.msdn.microsoft.com/Forums/zh-CN/2212/thread/b256c06f-796b-4aa9-8ec7-6fca4e7b0e68/
xiaocui2007 2011-05-18
  • 打赏
  • 举报
回复
那位有更好的方法,请指教!
缪军 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaocui2007 的回复:]
这个方法可以,不过这个函数调用的很频繁,难道每个button_Click里面都写上try,我想在函数内部解决![/Quote]

多了不想说了,建议详细了解C#的异常处理机制先,
这是主线索,以此展开学习:
http://msdn.microsoft.com/zh-cn/library/ms229014(v=VS.80).aspx
xiaocui2007 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gxttr 的回复:]
MessageBox.Show(ex.ToString(), "警告!");
return new DataSet();
[/Quote]
这个函数还要被其他函数调用,如果返回new DataSet(),后面的函数就会报错。如果报错的话,我想通过这个函数将这个操作终止(就是这个Click就终止了),有好的方法么?
遥望那些年 2011-05-18
  • 打赏
  • 举报
回复
MessageBox.Show(ex.ToString(), "警告!");
return new DataSet();
xiaocui2007 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 microtry 的回复:]
C# code
public static DataSet ExecuteQuery(string strSQL)
{
DataSet ds = new DataSet();
String strConnect = "Data Source=XIAOCUI2007\\MSSQLSERVER08;Initial C……
[/Quote]
这个方法可以,不过这个函数调用的很频繁,难道每个button_Click里面都写上try,我想在函数内部解决!
缪军 2011-05-18
  • 打赏
  • 举报
回复
 public static DataSet ExecuteQuery(string strSQL)
{
DataSet ds = new DataSet();
String strConnect = "Data Source=XIAOCUI2007\\MSSQLSERVER08;Initial Catalog=WaterSediDyMonit_YellowRiver;Integrated Security=SSPI";
SqlConnection conn = new SqlConnection(strConnect);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
da.Fill(ds);
conn.Close();
return ds;
}

//调用
private void btExecuteQuery_Click(object sender, EventArgs e)
{
try {
DataSet ds = ExecuteQuery(strSQL);
}
catch(Exception MyEx) {
//PageHelper.ShowExceptionMessage(MyEx);这是我们的处理
MessageBox.Show(ex.ToString(), "警告!");
}
}

Tragedy 2011-05-18
  • 打赏
  • 举报
回复
或者把这个放在前面DataSet ds = new DataSet();
ds = null;
return ds;
xiaocui2007 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xu56180825 的回复:]
Return Null;
[/Quote]
返回值为空还是会报错的,我想在catch里面将该操作终止,怎么写呢?
Tragedy 2011-05-18
  • 打赏
  • 举报
回复
return null;
xu56180825 2011-05-18
  • 打赏
  • 举报
回复
Return Null;

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧