异常处理
在我的机器上执行时没有错误,为什么在客户的机器上执行时会发生错误。我的系统是"Win7"而它的系统是“XP”.还有,在俺这边的XP的机器上也可以正常运行。
错误发生在执行事件“HZSJ_ASHZ_ValueChanged”时,“HZSJ_ASHZ”是个“DateTimePicker”控件。
private void HZSJ_ASHZ_ValueChanged(object sender, EventArgs e)
{
//先清空数据
BKSR_ASHZ.Text = "";
CZSR_ASHZ.Text = "";
XJSR_ASHZ.Text = "";
SPSR_ASHZ.Text = "";
HZSJ_ASHZ1.Text = HZSJ_ASHZ.Text;
//办卡收入
string hzsj=HZSJ_ASHZ.Value.ToString("yyyy-MM-dd");
string sql = "select sffy from hykblb where bksj=#"+hzsj+"#";
AccessDB access = new AccessDB();
OleDbDataReader rd = access.RunAs(sql);
int sum=0;
while (rd.Read())
{
if (rd["sffy"].ToString() != "")
{
int num = int.Parse(rd["sffy"].ToString());
sum = sum + num;
}
else
{
continue;
}
}
BKSR_ASHZ.Text = sum.ToString();
rd.Close();
出错信息如下:
Unhanded exception has occured in your application。if you click continue ,one application will ignore this error and attempt to continew . if you click Quit,the application will dose immediatly .
Input string was not in a correct format。
有的大侠说:int num = int.Parse(...);是异常抛出的地方,是因为查询结果为空。但是在这里不是进行“if (rd["sffy"].ToString() != "")”的判断了吗?
还有的大侠说是因为“日期形式”但是在Access数据库中“bksj”的字段是“日期/时间”型的字段,其值为“2010-10-08”。
这不知道是什么原因造成的。
如果在这里加“Try catch”语句捕获异常应该怎样加?捕获的是什么类型的异常?