IRONSOFTWAREHOME
开发者更新

C# Try/Catch(开发者如何使用)

Jacob Mellor, Chief Technology Officer @ Team Iron
Jacob Mellor
Updated: 2026年4月23日

如果您是C#编程的新手,您可能经常听到"try catch"语句这个术语。 在本教程中,我们将深入探讨异常处理的世界,重点关注catch块,探索如何使用try和catch语句使您的代码对错误更具弹性。 在此过程中,我们将提供大量现实生活中的示例,以帮助巩固您的理解。

什么是异常,为什么要处理它们?

在C#中,异常表示程序运行时发生的事件,这会干扰程序标准的指令执行过程。 当发生异常时,程序的控制流会被转移,如果异常未被处理,程序将会突然终止。

异常处理是一种预测和管理这些破坏性事件的方法,允许您的程序从意外问题中恢复并继续按预期运行。 通过使用try和catch块,您可以确保您的代码优雅地处理错误,并向用户提供有意义的反馈。

Try块

try块是您预期可能会生成异常的代码段。 当您将代码包装在try块中时,您告诉编译器您希望处理该块中可能出现的潜在异常。

这是如何使用try块的基本示例:

try
{
    // Code that may generate an exception
}
catch (Exception ex)
{
    // Handle the exception
}

Catch块捕获异常

catch语句与try块结合使用以处理异常。 当在try块中发生异常时,程序执行会跳转到相应的catch块,在那里您可以指定程序应该如何响应该异常。

要捕获异常,您需要在try块之后立即创建一个catch块。 catch块通常包括一个表示捕获异常的参数。

以下是catch语句的示例:

try
{
    int result = 10 / 0;
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("An error occurred: " + ex.Message);
}

在这个例子中,尝试块中的代码试图进行除以零操作,这将生成一个DivideByZeroException。 然后catch块处理异常,向用户显示一条消息。

多个Catch块处理不同的异常

有时,您的try块可能会生成不同类型的可能异常。 在这种情况下,您可以使用多个catch块分别处理每种异常类型。

以下示例演示了使用多个catch块:

try
{
    int[] numbers = new int[7];
    numbers[12] = 70; // This line will throw an exception
}
catch (IndexOutOfRangeException ex)
{
    Console.WriteLine("An index out of range error occurred: " + ex.Message);
}
catch (Exception e)
{
    Console.WriteLine("An unexpected error occurred: " + e.Message);
}

在这个例子中,尝试块中的代码试图为不存在的数组索引分配一个值,生成一个IndexOutOfRangeException。 第一个catch块处理这个特定的异常,而第二个catch块捕捉可能发生的其他异常。

请记住,使用多个catch块时,应始终从最具体的异常类型排序到最通用的异常类型。

异常过滤器为Catch块添加条件

异常过滤器允许您为catch块添加条件,仅在满足特定条件时才捕获异常。 要使用异常过滤器,请在捕获语句中添加when关键字,后跟条件。

以下示例演示了使用异常过滤器:

try
{
    int result = 10 / 0;
}
catch (DivideByZeroException ex) when (ex.Message.Contains("divide"))
{
    Console.WriteLine("An error occurred: " + ex.Message);
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("A different divide by zero error occurred: " + ex.Message);
}

在上述例子中,第一个捕获块将只在异常消息包含"divide"这个词时处理DivideByZeroException。 如果条件不满足,第二个catch块将处理异常。

Finally块确保代码执行

在某些情况下,您可能希望确保某段代码被执行,无论是否发生异常。 要实现这一点,您可以使用finally块。

finally块放置在try和catch块之后,无论是否发生异常都会执行。

以下是演示如何使用finally块的例子:

try
{
    int result = 10 / 2;
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("An error occurred: " + ex.Message);
}
finally
{
    Console.WriteLine("This line will always be executed.");
}

在上述例子中,即使尝试块内的代码没有生成异常,finally块仍然会被执行。

自定义异常:根据您的需求定制异常

有时,您可能希望创建自己的自定义异常,以处理代码中特定的异常。 为此,您可以创建一个继承自Exception类的新类。

以下是创建自定义异常的示例:

public class CustomException : Exception
{
    public CustomException(string errorMessage) : base(errorMessage)
    {
    }
}

现在,您可以在try和catch块中使用此自定义异常,如下所示:

try
{
    throw new CustomException("This is a custom exception.");
}
catch (CustomException ex)
{
    Console.WriteLine("A custom exception occurred: " + ex.Message);
}

在这个例子中,尝试块抛出一个CustomException实例,随后被catch块捕获并处理。

IronPDF:将PDF功能与异常处理集成

了解更多关于IronPDF的信息是一个流行的库,用于在C#中创建、编辑和提取PDF文件的内容。 在本节中,我们将探讨如何将IronPDF与您的try-catch异常处理方法集成,以优雅地处理潜在错误。

安装 IronPDF

要开始,首先需要安装IronPDF NuGet包。 您可以使用包管理器控制台执行此操作:

PM > Install-Package IronPdf

或者,您可以在Visual Studio中的"管理NuGet包"对话框中搜索"IronPDF"。

用IronPDF创建PDF并处理异常

假设您想要使用IronPDF从HTML字符串创建PDF文件。 由于创建PDF的过程可能会引发异常,您可以使用try-catch块来处理它们。 以下是如何使用IronPDF创建PDF并使用try-catch处理异常的例子:

using IronPdf;
using System;

try
{
    var renderer = new ChromePdfRenderer();
    string html = "Hello, World!";
    PdfDocument PDF = renderer.RenderHtmlAsPdf(html);
    PDF.SaveAs("output.PDF");
    Console.WriteLine("PDF created successfully.");
}
catch (Exception ex)
{
    Console.WriteLine("An unexpected error occurred: " + ex.Message);
}

在此示例中,try块包含使用IronPDF创建PDF的代码。 如果在过程中发生异常,catch块将处理错误,向用户显示相关错误消息。

从PDF中提取文本并处理异常

您可能还希望使用IronPDF从PDF文件中提取文本。 与前面的例子一样,您可以使用try-catch块来处理潜在的异常。

以下是使用IronPDF从PDF文件中提取文本并处理异常的示例:

using IronPdf;
using System;
using System.IO;

try
{
    string pdfPath = "input.PDF";
    if (File.Exists(pdfPath))
    {
        PdfDocument PDF = PdfDocument.FromFile(pdfPath);
        string extractedText = PDF.ExtractAllText();
        Console.WriteLine("Text extracted successfully: " + extractedText);
    }
    else
    {
        Console.WriteLine("The specified PDF file does not exist.");
    }
}
catch (Exception ex)
{
    Console.WriteLine("An unexpected error occurred: " + ex.Message);
}

C#中的Try/Catch(开发人员如何使用)图1

在此示例中,try块包含使用IronPDF从PDF中提取文本的代码。 如果在过程中发生异常,catch块将处理错误,向用户显示相关信息。

结论

通过将IronPDF与您的try-catch异常处理方法结合,您可以创建健壮的应用程序,在处理PDF文件的错误时优雅地处理错误。 这样不仅提高了应用程序的稳定性,还提升了整体用户体验。

请记住,当处理像IronPDF这样的外部库时,总是要考虑潜在的异常,并使用try和catch语句适当地处理它们。 这样,您可以确保您的应用程序是弹性和用户友好的,即使在处理意外问题时仍然如此。

IronPDF提供其库的免费试用,让您无需任何承诺即可探索其功能。 如果您决定在试用期后继续使用IronPDF,许可证费用从$999开始。

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor is Chief Technology Officer at Iron Software and a visionary engineer pioneering C# PDF technology. As the original developer behind Iron Software's core codebase, he has shaped the company's product architecture since its inception, transforming it alongside CEO Cameron Rimington into a 50+ person company serving NASA, Tesla, and global government agencies.

...
Read More

Related Articles

Key in blue circle

立即获取免费的 30 天试用版密钥

bullet_checked无需信用卡或创建账户
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge related to IronPDF Product Demo

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户