【发布时间】:2018-05-24 12:38:39
【问题描述】:
我有一个在 Visual Studio 中运行的 C# .NET 程序。它的功能是根据文件名将PDF文件合并在一起。 它适用于前 12 个左右的 PDF,但在某个点突然以代码 0 退出。我没有使用多线程,我使用的 PDF 库是 iTextSharp。
public static string MergePDFs(List<string> fileNames, ref string targetPdf)
{
string merged = "";
using (FileStream stream = new FileStream(targetPdf, FileMode.Create))
{
Document document = new Document();
PdfCopy pdf = new PdfCopy(document, stream);
PdfReader reader = null;
try
{
document.Open();
foreach (var file in fileNames)
{
reader = new PdfReader(file);
pdf.AddDocument(reader);
reader.Close();
}
}
catch (Exception)
{
// merged = "false";
if (reader != null) reader.Close();
}
finally
{
if (document != null)
{
Console.WriteLine("Closing document.");
document.Close(); // exits here
Console.WriteLine("Document closed.");
}
}
}
return merged;
}
调试器中的输出是:
...
Closing document.
The program has exited with code 0 (0x0)
【问题讨论】:
-
在调试器下运行它,或者在代码周围放置一个 try/catch 并转储任何异常。
-
始终记录异常,在您的情况下,将异常写入控制台
-
写出异常!
-
如果你删除了你的
try catch并想暴露原始异常的错误代码,stackoverflow.com/questions/35294313/…可能值得一读。 -
Console.WriteLine("Document closed.");不执行这一事实几乎可以保证@Mark 引发了异常。