【问题标题】:C# program exits with code 0 in the middle of executionC# 程序在执行过程中以代码 0 退出
【发布时间】: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 引发了异常。

标签: c# .net itext


【解决方案1】:

通过 catch 块打印出异常,但从未到达。 try 块执行成功。删除 try/catch/finally 块“修复”了问题。

这只是部分修复,因为现在无法处理错误。

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;

        document.Open();

        foreach (var file in fileNames)
        {
            reader = new PdfReader(file);
            pdf.AddDocument(reader);
            reader.Close();
        }

        document.Close();

    }

    return merged;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多