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 laatstecatch (PdfException)-blok toe als fallback voor alles wat de bibliotheek verder opwerpt. - Controleer
Form.IsXfaofForm.Typevoordat u XFA-specifieke methoden aanroept omInvalidFormTypeOperationExceptionte voorkomen. - Zoek lettertypen op met
FontRepository.FindFontvóór het renderen, zodat ontbrekende lettertypen expliciet afgehandeld kunnen worden, in plaats van uitsluitend te vertrouwen op exception handling. - Wanneer een onverwachte
PdfExceptionuw top-level handler bereikt, bouw dan eenCrashReportOptionsmet de opgevangen exceptie en roepex.GenerateCrashReport(options)aan om een diagnostisch rapport voor ondersteuningsverzoeken vast te leggen. - Geef het documentwachtwoord altijd door aan de
Documentconstructor-overload in plaats van het bestand eerst te openen en opnieuw te proberen.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
InvalidPasswordException bij het openen van het document | Verkeerd of ontbrekend wachtwoord opgegeven | Geef het juiste wachtwoord door aan de Document(filename, password) constructor |
InvalidPdfFileFormatException bij het openen van het document | Bestand is geen PDF, of is beschadigd of afgekapt | Controleer de bestandsheader en verkrijg het bronbestand opnieuw |
FontNotFoundException tijdens het renderen | Het aangevraagde lettertype is niet geïnstalleerd en er is geen vervangend lettertype geregistreerd | Registreer een lettertypebron of controleer FontRepository.Substitutions |
UnsupportedFontTypeException van FontRepository.OpenFont | Het geleverde bestand is geen herkend lettertypeprogramma | Bevestig dat het bestand een geldig lettertype is voordat u het opent |
InvalidFormTypeOperationException bij formulierbewerkingen | XFA-specifieke methode aangeroepen op een niet-XFA-formulier, of omgekeerd | Controleer 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
| Klasse | Beschrijving |
|---|---|
PdfException | Basisuitzondering voor fouten tijdens de uitvoering van een PDF-applicatie |
PdfTextDecodingException | Wordt gegooid wanneer tekstinhoud niet kan worden gedecodeerd |
IncorrectFontUsageException | Wordt gegooid wanneer een tekst-weergave-operator verschijnt zonder dat er een lettertype is ingesteld in de grafische status |
InvalidPasswordException | Gegooid wanneer een wachtwoordbeveiligde bewerking wordt geprobeerd zonder een geldig wachtwoord |
InvalidPdfFileFormatException | Gegooid wanneer een stream niet als PDF kan worden geopend |
FontNotFoundException | Gegooid wanneer het opgevraagde lettertype niet kan worden gevonden |
UnsupportedFontTypeException | Gegooid wanneer een bestand niet als lettertype kan worden geopend omdat het formaat niet wordt ondersteund |
InvalidFormTypeOperationException | Wordt gegooid wanneer een bewerking op het verkeerde formuliertype wordt geprobeerd |
PdfExceptionMessages | Gecentraliseerde berichtstrings die door de uitzonderingen en beveiligingsdiagnostiek van de bibliotheek worden weergegeven |