Uitzonderingsafhandeling

Uitzonderingsafhandeling

Uitzonderingsafhandeling

Deze gids toont hoe Aspose.PDF FOSS voor .NET fouten signaleert via een getypte uitzonderingshiërarchie met als wortel PdfException, die zelf afstamt van System.Exception, en hoe je elke categorie fout kunt opvangen. Elke PDF-specifieke uitzondering in de bibliotheek — een verkeerd wachtwoord, een onleesbaar bestand, een ontbrekend lettertype, of een ongeldige formulierbewerking — is afgeleid van PdfException, dus door alleen PdfException te vangen, kun je elke door de bibliotheek opgegooide fout onderscheppen, terwijl meer specifieke catch-blokken je in staat stellen verschillend te reageren op elke foutmodus.


Wachtwoord- en beveiligingsfouten

InvalidPasswordException wordt gegooid wanneer een wachtwoord-beveiligde bewerking wordt geprobeerd zonder een geldig wachtwoord te verstrekken, bijvoorbeeld bij het openen van een versleuteld document met het verkeerde wachtwoord.

try
{
    var doc = new Document("encrypted.pdf", "wrong-password");
}
catch (InvalidPasswordException ex)
{
    Console.WriteLine($"Password rejected: {ex.Message}");
}

Bestandsformaatfouten

InvalidPdfFileFormatException wordt gegooid wanneer een stream niet als PDF kan worden geopend — een slechte header, een afgekapt bestand, of inhoud die helemaal niet herkenbaar is als PDF.

try
{
    var doc = new Document("not-a-pdf.txt");
}
catch (InvalidPdfFileFormatException ex)
{
    Console.WriteLine($"Not a valid PDF: {ex.Message}");
}

Lettertypefouten

Lettertypegerelateerde fouten vallen in drie verschillende exceptietypen, afhankelijk van wat er misging:

  • FontNotFoundException — geen systeemlettertype of aangepaste lettertypebron komt overeen met de gevraagde lettertype-naam.
  • UnsupportedFontTypeException — het opgegeven bestand als lettertype is geen herkend lettertype-programma.
  • IncorrectFontUsageException — er verschijnt een tekst-weergave-operator in een content-stroom terwijl er geen lettertype is ingesteld in de huidige grafische staat.
try
{
    var font = FontRepository.FindFont("NonexistentFont");
}
catch (FontNotFoundException ex)
{
    Console.WriteLine($"Font not found: {ex.Message}");
}

try
{
    var font = FontRepository.OpenFont("not-a-font-file.dat");
}
catch (UnsupportedFontTypeException ex)
{
    Console.WriteLine($"Unsupported font file: {ex.Message}");
}

try
{
    var extractor = new PdfExtractor(doc);
    extractor.ExtractText();
}
catch (IncorrectFontUsageException ex)
{
    Console.WriteLine($"Content stream font error: {ex.Message}");
}

Fouten bij tekstextractie

PdfTextDecodingException wordt gegooid wanneer tekstinhoud niet kan worden gedecodeerd, bijvoorbeeld wanneer de codering waarnaar een lettertype verwijst ontbreekt of onjuist is.

try
{
    var extractor = new PdfExtractor(doc);
    extractor.GetText("output.txt");
}
catch (PdfTextDecodingException ex)
{
    Console.WriteLine($"Text decoding failed: {ex.Message}");
}

Fouten met formulier-type

InvalidFormTypeOperationException wordt gegooid wanneer een bewerking wordt geprobeerd op het verkeerde formulier-type — bijvoorbeeld het aanroepen van een XFA-specifieke methode op een formulier dat geen XFA-gebaseerd formulier is.

try
{
    var form = new Form(doc);
    form.AssignXfa(xmlData);
}
catch (InvalidFormTypeOperationException ex)
{
    Console.WriteLine($"Wrong form type: {ex.Message}");
}

Tips en Best Practices

  • Vang eerst het meest specifieke exceptietype op (bijvoorbeeld InvalidPasswordException) en voeg alleen een laatste catch (PdfException)-blok toe als fallback voor alles wat de bibliotheek verder opwerpt.
  • Controleer Form.IsXfa of Form.Type voordat u XFA-specifieke methoden aanroept om InvalidFormTypeOperationException te voorkomen.
  • Zoek lettertypen op met FontRepository.FindFont vóór het renderen, zodat ontbrekende lettertypen expliciet afgehandeld kunnen worden, in plaats van uitsluitend te vertrouwen op exception handling.
  • Wanneer een onverwachte PdfException uw top-level handler bereikt, bouw dan een CrashReportOptions met de opgevangen exceptie en roep ex.GenerateCrashReport(options) aan om een diagnostisch rapport voor ondersteuningsverzoeken vast te leggen.
  • Geef het documentwachtwoord altijd door aan de Document constructor-overload in plaats van het bestand eerst te openen en opnieuw te proberen.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
InvalidPasswordException bij het openen van het documentVerkeerd of ontbrekend wachtwoord opgegevenGeef het juiste wachtwoord door aan de Document(filename, password) constructor
InvalidPdfFileFormatException bij het openen van het documentBestand is geen PDF, of is beschadigd of afgekaptControleer de bestandsheader en verkrijg het bronbestand opnieuw
FontNotFoundException tijdens het renderenHet aangevraagde lettertype is niet geïnstalleerd en er is geen vervangend lettertype geregistreerdRegistreer een lettertypebron of controleer FontRepository.Substitutions
UnsupportedFontTypeException van FontRepository.OpenFontHet geleverde bestand is geen herkend lettertypeprogrammaBevestig dat het bestand een geldig lettertype is voordat u het opent
InvalidFormTypeOperationException bij formulierbewerkingenXFA-specifieke methode aangeroepen op een niet-XFA-formulier, of omgekeerdControleer Form.IsXfa of Form.Type voordat u type-specifieke methoden aanroept

FAQ

Moet ik PdfException vangen of de specifieke subklasse?

Vang de specifieke subklasse, zoals InvalidPasswordException, wanneer je anders moet reageren op die fout. Voeg een laatste catch (PdfException)-blok toe als fallback voor elke andere door de bibliotheek opgegooide fout.

Leiden alle PDF-specifieke uitzonderingen af van PdfException?

Ja. PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException en InvalidFormTypeOperationException leiden allemaal af van PdfException, dat zelf afleidt van System.Exception.

Waar is PdfExceptionMessages voor?

PdfExceptionMessages is een statische klasse die berichtteksten centraliseert die door de uitzonderingen en beveiligingsdiagnostiek van de bibliotheek naar voren komen, inclusief het DangerousFile-bericht.

Kan ik een diagnostisch rapport genereren wanneer een uitzondering optreedt?

Ja. Maak een CrashReportOptions-instantie aan met de opgevangen uitzondering, stel optioneel eigenschappen in zoals ApplicationTitle en CrashReportDirectory, en roep GenerateCrashReport(options) aan op de PdfException om een gedetailleerd crashrapport te schrijven.


API Reference Samenvatting

KlasseBeschrijving
PdfExceptionBasisuitzondering voor fouten tijdens de uitvoering van een PDF-applicatie
PdfTextDecodingExceptionWordt gegooid wanneer tekstinhoud niet kan worden gedecodeerd
IncorrectFontUsageExceptionWordt gegooid wanneer een tekst-weergave-operator verschijnt zonder dat er een lettertype is ingesteld in de grafische status
InvalidPasswordExceptionGegooid wanneer een wachtwoordbeveiligde bewerking wordt geprobeerd zonder een geldig wachtwoord
InvalidPdfFileFormatExceptionGegooid wanneer een stream niet als PDF kan worden geopend
FontNotFoundExceptionGegooid wanneer het opgevraagde lettertype niet kan worden gevonden
UnsupportedFontTypeExceptionGegooid wanneer een bestand niet als lettertype kan worden geopend omdat het formaat niet wordt ondersteund
InvalidFormTypeOperationExceptionWordt gegooid wanneer een bewerking op het verkeerde formuliertype wordt geprobeerd
PdfExceptionMessagesGecentraliseerde berichtstrings die door de uitzonderingen en beveiligingsdiagnostiek van de bibliotheek worden weergegeven

Zie ook

 Nederlands