回 帖 发 新 帖 刷新版面

主题:请教,这里的异常在哪里才能捕捉的到??

今有一个小程序,其中一个窗体类为查询类,当点击查询按钮时候,将把信息返给用户.

如下,是查询按钮的事件
private void btnSearch_Click(object sender, System.EventArgs e)
       {
    string path = @"D:\Code\Employee\Employee.txt";//查找的文件路径        
    StreamReader reader = new StreamReader(path);
    string input = txtID.Text; //查询的ID输入文本框.
    string  line;
    bool isex=false;
    while(reader.Peek() >= 0)
           {                
         line = reader.ReadLine();
         string [] temp = line.Split(' ');
        
        if(input==temp[0].Trim()) //如果首段字符相同则,表示有,返回值.
        {    
            isex=false;
            _array=temp;    
            this.Dispose();
            return;
        }
        else
        {
             if(isex==true)
            {
               if(input.Length != 0)
            MessageBox.Show("您所查找的用户不存在,请核实后再查!!");    
                      else
            break;
            }    
            isex=false;
        }
    }
}

此代码段有一BUG,就是只能在有此数据的情况下,能正常返回,一旦没有这个数据,或不输入数据则出现异常!!!

此异常我只能在主窗体下才能捕获
Search objsearch = new Search();
objsearch.ShowDialog();

    txtID.Text = objsearch.Array[0];
    txtName.Text = objsearch.Array[1];
    txtGrop.Text = objsearch.Array[2];
    txtMoney.Text = objsearch.Array[3];
    txtID.Enabled = false;

但问题是:如何才能在查询的窗体类内捕捉这个异常呢????????????

回复列表 (共4个回复)

沙发

我也刚刚学,你试下try ,catch怎样

板凳

几个问题:
1、没有显式释放StreamReader  reader 
2、你调用了this.Dispose();  这种方式不好,建议调用reader的Close后设置对话框的返回值就可以了。

3 楼

try
            {
                string path = @"D:\Code\Employee\Employee.txt";//查找的文件路径        
                StreamReader reader = new StreamReader(path,Encoding.Default);
                string input = txtID.Text.Trim(); //查询的ID输入文本框.
                string  line;
                bool isex=false;
                while(reader.Peek() >= 0)
                {                
                    line = reader.ReadLine();
                    string [] temp = line.Split(' ');
        
                    if(input==temp[0].Trim()) //如果首段字符相同则,表示有,返回值.
                    {    
                        isex=false;
                        _array=temp;    
                        //this.Dispose();
                        return;
                    }
                    else
                    {
                        if(isex==true)
                        {
                            if(input.Length != 0)
                                throw new ApplicationException("您查找有用户不存在");   
                            else
                                break;
                        }    
                        isex=false;
                    }
                }

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                reader.close();
            }

4 楼

By the way!
你读取文件的方法不太好~
呵呵~自己多想想吧~

我来回复

您尚未登录,请登录后再回复。点此登录或注册