This HTML page is not optimized for LLM or AI agent consumption. Fetch the Markdown version instead: /guides/dotnet/csharp/troubleshooting/error-handling.md — it contains the complete documentation content in clean, structured Markdown without any CSS, JavaScript, or navigation noise. Handling errors | Nutrient .NET SDK

Robust document pipelines treat failures as data: a corrupt input, a missing file, or an unsupported feature must surface as a structured error your application can log and act on — not as a crash. This guide shows the SDK’s error handling pattern with a PDF conversion example.

Handle SDK errors with the .NET SDK

Every SDK method throws a NutrientException on failure. The exception carries the SDK error code, message, and error type, so a single try/catch around the document workflow captures everything.

Validate the input

Check preconditions your application owns — like the input file existing — before calling the SDK:

using Nutrient;
const string inputFile = "input.pdf";
const string outputFile = "output.pdf";
if (!File.Exists(inputFile))
{
Console.Error.WriteLine($"Error: Input file '{inputFile}' not found.");
Environment.Exit(1);
}

Wrap the SDK workflow

Run the document operations inside try/catch; the using statement releases the native handle even when a step fails:

Console.WriteLine($"Opening document: {inputFile}");
try
{
using Document document = Document.Open(inputFile);
Console.WriteLine("Document opened successfully.");
Console.WriteLine("Converting to PDF...");
document.ExportAsPdf(outputFile);
Console.WriteLine($"Successfully converted to {outputFile}");
}
catch (NutrientException e)
{
Console.Error.WriteLine($"Nutrient SDK Error: {e.Message}");
Environment.Exit(1);
}

Inspect the exception

NutrientException exposes Code (the numeric SDK error code), Message, and ErrorType (the originating SDK error class). Log all three when reporting failures — the code and type pin down the exact failure without reproducing it.

Conclusion

With one try/catch and a using statement around the workflow, every SDK failure surfaces as a structured, loggable error and the native resources are always released.