Kivételkezelés
Kivételkezelés
Ez az útmutató bemutatja, hogyan jelzi a Aspose.PDF FOSS a .NET számára a hibákat egy típusos kivételhierarchián keresztül, amelynek gyökere a PdfException, amely maga a System.Exception leszármazottja, és hogyan lehet elkapni a hibakategóriákat. A könyvtár minden PDF-specifikus kivétele — rossz jelszó, olvashatatlan fájl, hiányzó betűtípus vagy érvénytelen űrlapművelet — a PdfException leszármazottja, így a PdfException egyedüli elkapása elegendő bármely, a könyvtár által dobott hiba elkapásához, míg a specifikusabb catch blokkok lehetővé teszik, hogy különböző módon reagáljon minden hibamódra.
Jelszó- és biztonsági hibák
InvalidPasswordException akkor dobódik, amikor egy jelszóval védett műveletet próbálnak végrehajtani érvényes jelszó megadása nélkül, például egy titkosított dokumentumot nyitnak meg a rossz jelszóval.
try
{
var doc = new Document("encrypted.pdf", "wrong-password");
}
catch (InvalidPasswordException ex)
{
Console.WriteLine($"Password rejected: {ex.Message}");
}Fájlformátum hibák
InvalidPdfFileFormatException akkor dobódik, amikor egy adatfolyamot nem lehet PDF-ként megnyitni — rossz fejléc, csonkított fájl, vagy olyan tartalom, amely egyáltalán nem ismerhető fel PDF-ként.
try
{
var doc = new Document("not-a-pdf.txt");
}
catch (InvalidPdfFileFormatException ex)
{
Console.WriteLine($"Not a valid PDF: {ex.Message}");
}Betűtípus hibák
A betűtípusokkal kapcsolatos hibák három különböző kivételtípusba sorolhatók, attól függően, hogy mi ment rosszul:
FontNotFoundException— nincs olyan rendszerszintű vagy egyéni betűtípus forrás, amely megegyezne a kért betűtípusnévvel.UnsupportedFontTypeException— a betűtípusként megadott fájl nem felismert betűtípusprogram.IncorrectFontUsageException— egy szövegmegjelenítő operátor jelenik meg egy tartalmi adatfolyamban, miközben a jelenlegi grafikai állapotban nincs beállítva betűtípus.
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}");
}Szövegkinyerési hibák
PdfTextDecodingException akkor dobódik, amikor a szövegtartalmat nem lehet dekódolni, például ha a betűtípus által hivatkozott kódolás hiányzik vagy hibás.
try
{
var extractor = new PdfExtractor(doc);
extractor.GetText("output.txt");
}
catch (PdfTextDecodingException ex)
{
Console.WriteLine($"Text decoding failed: {ex.Message}");
}Űrlaptípus hibák
InvalidFormTypeOperationException akkor dobódik, amikor egy műveletet a helytelen űrlaptípuson próbálnak végrehajtani — például XFA-specifikus metódust hívnak meg egy nem XFA-alapú űrlapon.
try
{
var form = new Form(doc);
form.AssignXfa(xmlData);
}
catch (InvalidFormTypeOperationException ex)
{
Console.WriteLine($"Wrong form type: {ex.Message}");
}Tippek és legjobb gyakorlatok
- Először a legspecifikusabb kivételtípust fogja el (például
InvalidPasswordException), és csak végül adjon hozzá egycatch (PdfException)blokkot, mint tartalékot minden más esetben, amit a könyvtár kivált. - Ellenőrizze a(z)
Form.IsXfavagyForm.Typeértéket XFA-specifikus metódusok hívása előtt, hogy elkerülje a(z)InvalidFormTypeOperationExceptionelőfordulását. - Keresse meg a betűtípusokat a(z)
FontRepository.FindFontsegítségével renderelés előtt, hogy a hiányzó betűtípusok kifejezetten kezelhetők legyenek, ahelyett, hogy kizárólag a kivételkezelésre támaszkodna. - Amikor egy váratlan
PdfExceptioneléri a legfelső szintű kezelőjét, hozzon létre egyCrashReportOptionsa befogott kivétellel, és hívja meg a(z)ex.GenerateCrashReport(options)funkciót, hogy diagnosztikai jelentést készítsen a támogatási kérésekhez. - Mindig adja át a dokumentum jelszavát a(z)
Documentkonstruktor túlterhelésen keresztül, ahelyett, hogy először megnyitná a fájlt és újrapróbálná.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
InvalidPasswordException dokumentum megnyitásakor | Helytelen vagy hiányzó jelszó megadva | Adja át a helyes jelszót a Document(filename, password) konstruktorának |
InvalidPdfFileFormatException dokumentum megnyitásakor | A fájl nem PDF, vagy sérült vagy csonkolt | Ellenőrizze a fájlfejlécet, és szerezze be újra a forrásfájlt |
FontNotFoundException a renderelés során | A kért betűtípus nincs telepítve, és nincs helyettesítő regisztrálva | Regisztráljon egy betűtípus forrást, vagy ellenőrizze a(z) FontRepository.Substitutions |
UnsupportedFontTypeException a(z) FontRepository.OpenFont -tól | A megadott fájl nem felismert betűtípusprogram | Ellenőrizze, hogy a fájl érvényes betűtípus-e, mielőtt megnyitná |
InvalidFormTypeOperationException az űrlap műveletek során | XFA-specifikus metódus meghívva egy nem XFA űrlapon, vagy fordítva | Ellenőrizze a(z) Form.IsXfa vagy Form.Type értéket, mielőtt típus-specifikus metódusokat hívna |
FAQ
El kellene kapnom a PdfException-t vagy a konkrét alosztályt?
Kapd el a konkrét alosztályt, például a InvalidPasswordException-t, ha másképp szeretnél reagálni arra a hibára. Adj hozzá egy végső catch (PdfException) blokkot, mint tartalékot minden egyéb, a könyvtár által dobott hibához.
Minden PDF-specifikus kivétel a PdfException-ből származik?
Igen. A PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException és a InvalidFormTypeOperationException mind a PdfException-ből származnak, amely maga a System.Exception-ből származik.
Mi a PdfExceptionMessages célja?
PdfExceptionMessages egy statikus osztály, amely központosítja a könyvtár kivételei és biztonsági diagnosztikái által felhozott üzenetkarakterláncokat, beleértve a DangerousFile üzenetet.
Készíthetek diagnosztikai jelentést, amikor kivétel fordul elő?
Igen. Hozz létre egy CrashReportOptions példányt a elkapott kivétellel, opcionálisan állíts be olyan tulajdonságokat, mint a ApplicationTitle és a CrashReportDirectory, majd hívd meg a GenerateCrashReport(options)-at a PdfException-on a részletes összeomlási jelentés írásához.
API Reference Összefoglaló
| Osztály | Leírás |
|---|---|
PdfException | Alap kivétel a PDF-alkalmazás végrehajtása során keletkező hibákhoz |
PdfTextDecodingException | Kivétel dobódik, ha a szövegtartalmat nem lehet dekódolni |
IncorrectFontUsageException | Kivétel dobódik, ha egy szöveg-megjelenítő operátor jelenik meg, miközben a grafikai állapotban nincs beállítva betűtípus |
InvalidPasswordException | Kivétel akkor, amikor egy jelszóval védett műveletet próbálnak végrehajtani érvényes jelszó nélkül |
InvalidPdfFileFormatException | Kivétel, amikor egy adatfolyamot nem lehet PDF-ként megnyitni |
FontNotFoundException | Kivétel, amikor a kért betűtípust nem lehet megtalálni |
UnsupportedFontTypeException | Kivétel, amikor egy fájlt nem lehet betűtípusként megnyitni, mert a formátuma nem támogatott |
InvalidFormTypeOperationException | Kivétel, ha egy műveletet a helytelen űrlaptípuson próbálnak végrehajtani |
PdfExceptionMessages | Központosított üzenetkarakterláncok, amelyeket a könyvtár kivételei és biztonsági diagnosztikái hoznak felszínre |