【问题标题】:strange error from ZipFile.CreateFromDirectory来自 ZipFile.CreateFromDirectory 的奇怪错误
【发布时间】:2016-09-21 20:05:54
【问题描述】:

以下代码块陷入困境,zip文件不存在,我在此代码块之前的代码块中检查。

 try
 {
     ZipFile.CreateFromDirectory(pathToFilesToZip, zipPath, CompressionLevel.Fastest, true);
     //ZipFile.ExtractToDirectory(zipPath, pathToStoreNewZipFile);
     return true;
  }
  catch (Exception ex)
  {
      //log error here
      var errorMessage = ex.InnerException;
      Console.WriteLine(errorMessage);
      return false;
  }

问题是代码有效,zip 文件是在正确的位置创建的。更奇怪的是, ex 在 catch 块中为空。 为什么执行的代码行会产生异常?

【问题讨论】:

  • 我之前遇到过这个问题,我删除了异常部分中的代码有随机问题,所以我将代码包装在 using 并消除了 try catch 我认为这可能是一个错误,你可以尝试相同东西..
  • @MethodMan...用什么?这段代码中有什么是一次性的?
  • @dinotom zip 文件是否可能已经存在,可能从第一次执行开始?
  • 在代码运行之前zip不存在,我已经检查过了
  • 一个 InnerException 可以有它自己的 InnerException 等等。我想如果你确切地知道你正在寻找什么异常堆栈,那么你可以直接进入 InnerException,但否则可能有 10 个异常通过 InnerException 链接在一起,你只会抓住第一个。我使用this method 作为获取所有内部异常的简单方法while (ex != null) {print ex.message; ex = ex.InnerException;}

标签: c# zipfile


【解决方案1】:

如果要创建的 zip 文件已经存在,则会引发异常。尝试在创建 zip 文件之前先添加以下行来删除 zip 文件:

File.Delete(zipPath);

关于空异常,不记录ex.InnerException,只记录exex.Message。我看到的异常消息是:

文件“C:\Temp\temp.zip”已经存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多