遍历时遇到出错跳出循环的解决办法

在遍历某一个文件夹时,遍历文件夹内的内容,可能在操作过程中会出现错误,这时我们就要把错误弹出来,跳出foreach循环,这时用return时是不管用的,return后只能是结束本次循环,继续下一次循环。这时我们怎么跳出来呢,灵机一动,想起来以前学的goto,于是去网上查了下goto的用法,最后试了一下,果然达到预期效果。这是我第一次用goto哦,哈哈 分享下代码吧 :

 

 //导入按钮触发的事情
        private void buttonX2_Click(object sender, EventArgs e)
        {
                DirectoryInfo dinfo = new DirectoryInfo(textBox1.Text);
                FileSystemInfo[] fsinfos = dinfo.GetFileSystemInfos();
                //这个foreach是用来验证表格数据输入格式是否正确,如果发现格式不正确,则不执行下面用来导入内容的foreach
                foreach (FileSystemInfo fsinfo in fsinfos)
                {
                    if (fsinfo is DirectoryInfo)
                    {
                        string a = textBox1.Text + "\\" + fsinfo;
                        DirectoryInfo dinfo1 = new DirectoryInfo(a);
                        FileSystemInfo[] fsinfos1 = dinfo1.GetFileSystemInfos();

                        foreach (FileSystemInfo fsinfo1 in fsinfos1)
                        {
                            if (fsinfo1 is DirectoryInfo)//如果是文件夹
                            {
                                MessageBox.Show("你的文件夹深度大于3层,本系统只支持2层以内的excel文件");
                                return;
                            }
                            else//如果是excel文件
                            {
                                FileInfo finfo1 = new FileInfo(fsinfo1.FullName);
                                string name = finfo1.Name;
                                string pathexcel = a + "\\" + finfo1.Name;
                               int h = panduanexcelgeshi(name, pathexcel);
                               if (h == 1)
                               {
                                   goto wuxiao;
                               }
                              
                            }
                        }

                    }
                    else
                    {
                        FileInfo finfo = new FileInfo(fsinfo.FullName);
                        //MessageBox.Show("文件信息名称" + finfo.Name);
                        string name = finfo.Name;
                        string pathexcel = textBox1.Text.ToString() + "\\" + finfo.Name;
                        int h = panduanexcelgeshi(name, pathexcel);
                        if (h == 1)
                        {
                            goto wuxiao;
                        }

                    }//判断是否为文件的If语句结束


                }//forreach结束

               //从这个foreach开始是用来导入表格数据的
                foreach (FileSystemInfo fsinfo in fsinfos)
                {
                    if (fsinfo is DirectoryInfo)
                    {
                        string a = textBox1.Text + "\\" + fsinfo;
                        DirectoryInfo dinfo1 = new DirectoryInfo(a);
                        FileSystemInfo[] fsinfos1 = dinfo1.GetFileSystemInfos();

                        foreach (FileSystemInfo fsinfo1 in fsinfos1)
                        {
                            if (fsinfo1 is DirectoryInfo)//如果是文件夹
                            {
                                MessageBox.Show("你的文件夹深度大于3层,本系统只支持2层以内的excel文件");
                                return;
                            }
                            else//如果是excel文件
                            {
                                FileInfo finfo1 = new FileInfo(fsinfo1.FullName);
                                string name = finfo1.Name;
                                string pathexcel = a + "\\" + finfo1.Name;
                                panduanexcelname(name, pathexcel);
                              
                               
                            }
                        }
                     
                    }
                    else
                    {
                        FileInfo finfo = new FileInfo(fsinfo.FullName);
                        //MessageBox.Show("文件信息名称" + finfo.Name);
                        string name = finfo.Name;
                        string pathexcel = textBox1.Text.ToString() + "\\" + finfo.Name;
                        panduanexcelname(name, pathexcel);
                     
                    }//判断是否为文件的If语句结束


                }//forreach结束

           wuxiao: int erty = 0; //goto跳转到的地方

        }//导入按钮触发完毕

这里的wuxiao后的这句话是随便写的,让程序跳到这里随便执行不相干的一句。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值