Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ZipFile.CreateFromDirectory中出现奇怪错误_C#_Zipfile - Fatal编程技术网

C# ZipFile.CreateFromDirectory中出现奇怪错误

C# ZipFile.CreateFromDirectory中出现奇怪错误,c#,zipfile,C#,Zipfile,下面的代码块落入陷阱,并且zip文件不存在,我在这个代码块之前的代码块中检查它 try { ZipFile.CreateFromDirectory(pathToFilesToZip, zipPath, CompressionLevel.Fastest, true); //ZipFile.ExtractToDirectory(zipPath, pathToStoreNewZipFile); return true; } catch (Exception e

下面的代码块落入陷阱,并且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块中为null。
为什么执行的代码行会生成异常?

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

File.Delete(zipPath);
对于空异常,不记录
ex.InnerException
而只记录
ex
ex.Message
。我看到的异常信息是:

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


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

File.Delete(zipPath);
对于空异常,不记录
ex.InnerException
而只记录
ex
ex.Message
。我看到的异常信息是:

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


我以前遇到过这个问题,我删除了异常部分中的代码,因为它有随机问题,所以我将代码包装在一个using中,并消除了try-catch,我认为这可能是一个bug,您可以尝试同样的事情..@MethodMan…使用什么?此代码中的哪些内容是一次性的?@dinotom是否可能zip文件已经存在,可能是从第一次执行开始的?在代码运行之前,zip不存在,我已经检查了InnerException是否可以有自己的InnerException等等。我想,如果您确切地知道要查找的异常堆栈,那么您可以直接转到InnerException,否则可能会有10个异常通过InnerException链接在一起,而您只能获取第一个异常。我使用一种简单的方法来获取所有内部异常,
while(ex!=null){print ex.message;ex=ex.InnerException;}
我以前遇到过这个问题,我删除了异常部分中的代码,但出现了随机问题,因此我将代码包装在一个using中,并消除了try-catch,我认为这可能是一个bug,您可以尝试同样的方法。@MethodMan…使用什么?此代码中的哪些内容是一次性的?@dinotom是否可能zip文件已经存在,可能是从第一次执行开始的?在代码运行之前,zip不存在,我已经检查了InnerException是否可以有自己的InnerException等等。我想,如果您确切地知道要查找的异常堆栈,那么您可以直接转到InnerException,否则可能会有10个异常通过InnerException链接在一起,而您只能获取第一个异常。我使用一种简单的方法来获取所有内部异常,
while(ex!=null){print ex.message;ex=ex.InnerException;}