繁体   English   中英

异常处理未检测到 try catch 块

[英]Exception Handling not detect try catch block

这是我的代码。

void worker_DoWork(object sender, DoWorkEventArgs e)
          {
              try
              {
                  foreach (var a in fpath)
                  {       
                      fin = new FileStream(a, FileMode.Open, FileAccess.Read, FileShare.Read);
                          total = fin.Length;
                          totalsize += total;
                          fin.Close();
                  }

              foreach (var a in fpath)
              {

                      dispatchertimer.Start();
                      stopwatch.Start();

                      filepath = System.IO.Path.GetFileName(a.ToString());
                      string destFile = System.IO.Path.Combine(DestinationPath, filepath);
                      fin = new FileStream(a.ToString(), FileMode.Open, FileAccess.Read, FileShare.Read);
                      filesize = fin.Length;
                      if (overwrite == true)
                      {



                          fout = new FileStream(destFile, FileMode.OpenOrCreate, FileAccess.Write);
                          while (fin.Position != filesize)
                          {
                              int n = fin.Read(buffer, 0, buffer.Length);
                              fout.Write(buffer, 0, n);
                              currentfilecopy += n;
                              PBvalue = currentfilecopy * 100 / totalsize;
                              (sender as BackgroundWorker).ReportProgress((int)PBvalue);
                          }
                          fout.Flush();
                          fout.Close();
                          fileResultCollection.Add(new Result() { FileName = filepath, FileResult = "Pass" });
                      }
                      else
                      {
                          if (!File.Exists(System.IO.Path.Combine(DestinationPath, filepath)))
                          {
                              fout = new FileStream(destFile, FileMode.OpenOrCreate, FileAccess.Write);
                              while (fin.Position != filesize)
                              {
                                  int n = fin.Read(buffer, 0, buffer.Length);
                                  fout.Write(buffer, 0, n);
                                  currentfilecopy += n;
                                  PBvalue = currentfilecopy * 100 / totalsize;
                                  (sender as BackgroundWorker).ReportProgress((int)PBvalue);
                              }
                              fileResultCollection.Add(new Result() { FileName = filepath, FileResult = "Pass" });
                          }
                          else
                          {

                                  //int n = fin.Read(buffer, 0, buffer.Length);
                                  //fout.Write(buffer, 0, n);
                                  filesize = fin.Length;
                                  currentfilecopy += filesize;
                                  PBvalue = currentfilecopy * 100 / totalsize;
                                  (sender as BackgroundWorker).ReportProgress((int)PBvalue);

                              fileResultCollection.Add(new Result() { FileName = filepath, FileResult = "Pass" });
                          }
                      }

                  }
              }
              #region CatchBlocks
              catch (UnauthorizedAccessException ex)
                  {
                      fileResultCollection.Add(new Result() { FileReason = ex.Message, FileResult = "Fail",FileName = filepath });

                  }
                  catch (ArgumentNullException ex)
                  {
                      fileResultCollection.Add(new Result() { FileReason = ex.Message, FileResult = "Fail", FileName = filepath });
                  }
                  catch (ArgumentException ex)
                  {
                      fileResultCollection.Add(new Result() { FileReason = ex.Message, FileResult = "Fail", FileName = filepath });
                  }
                  catch (PathTooLongException ex)
                  {
                      fileResultCollection.Add(new Result() { FileReason = ex.Message, FileResult = "Fail", FileName = filepath });
                  }
                  catch (DirectoryNotFoundException ex)
                  {
                      fileResultCollection.Add(new Result() { FileReason = ex.Message, FileResult = "Fail", FileName = filepath });
                  }
                  catch (FileNotFoundException ex)
                  {
                      fileResultCollection.Add(new Result() { FileReason = ex.Message, FileResult = "Fail", FileName = filepath });
                  }
                  catch (IOException ex)
                  {
                      fileResultCollection.Add(new Result() { FileReason = ex.Message, FileResult = "Fail", FileName = filepath });
                  }
                  catch (NotSupportedException ex)
                  {
                      fileResultCollection.Add(new Result() { FileReason = ex.Message, FileResult = "Fail", FileName = filepath });
                  }
              #endregion
          }

您只捕获特定的异常。 如果发生Exception而您没有明确列出该程序仍然会崩溃。

当您以相同的方式处理所有异常时,您也可以切换到通用异常处理程序:

try
{
    //...
}
catch (Exception ex)
{
    fileResultCollection.Add(new Result() { FileReason = ex.Message, FileResult = "Fail", FileName = filepath });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM