Gestionarea excepţiilor
Gestionarea excepțiilor
Acest ghid arată cum Aspose.PDF FOSS pentru .NET semnalează eșecuri printr-o ierarhie de excepții tipizată cu rădăcina în PdfException, care la rândul său derivă din System.Exception, și cum să prinzi fiecare categorie de eroare. Fiecare excepție specifică PDF din bibliotecă — o parolă incorectă, un fișier ilizibil, un font lipsă sau o operație de formular invalidă — derivă din PdfException, astfel că prin prinderea doar a PdfException este suficientă pentru a intercepta orice eroare ridicată de bibliotecă, în timp ce blocurile catch mai specifice îți permit să reacționezi diferit la fiecare mod de eșec.
Erori de parolă și securitate
InvalidPasswordException este aruncată când se încearcă o operație protejată prin parolă fără a furniza o parolă validă, cum ar fi deschiderea unui document criptat cu parola greșită.
try
{
var doc = new Document("encrypted.pdf", "wrong-password");
}
catch (InvalidPasswordException ex)
{
Console.WriteLine($"Password rejected: {ex.Message}");
}Erori de format de fișier
InvalidPdfFileFormatException este aruncată când un flux nu poate fi deschis ca PDF — un antet incorect, un fișier trunchiat sau conținut care nu este deloc recunoscut ca PDF.
try
{
var doc = new Document("not-a-pdf.txt");
}
catch (InvalidPdfFileFormatException ex)
{
Console.WriteLine($"Not a valid PDF: {ex.Message}");
}Erori de font
Eșecurile legate de fonturi se încadrează în trei tipuri distincte de excepții, în funcție de ce a mers greșit:
FontNotFoundException— niciun font de sistem sau sursă de font personalizat nu corespunde numelui de font solicitat.UnsupportedFontTypeException— fișierul furnizat ca font nu este un program de font recunoscut.IncorrectFontUsageException— un operator de afișare a textului apare într-un flux de conținut în timp ce nu este setat niciun font în starea grafică curentă.
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}");
}Erori de extragere a textului
PdfTextDecodingException este aruncată când conținutul textului nu poate fi decodat, de exemplu când codificarea referențiată de un font lipsește sau este defectă.
try
{
var extractor = new PdfExtractor(doc);
extractor.GetText("output.txt");
}
catch (PdfTextDecodingException ex)
{
Console.WriteLine($"Text decoding failed: {ex.Message}");
}Erori de tip formular
InvalidFormTypeOperationException este aruncată când se încearcă o operație pe tipul greșit de formular — de exemplu, apelarea unei metode specifice XFA pe un formular care nu este bazat pe XFA.
try
{
var form = new Form(doc);
form.AssignXfa(xmlData);
}
catch (InvalidFormTypeOperationException ex)
{
Console.WriteLine($"Wrong form type: {ex.Message}");
}Sfaturi și practici recomandate
- Prindeți mai întâi cel mai specific tip de excepție (de exemplu,
InvalidPasswordException) și adăugați un bloc finalcatch (PdfException)doar ca o soluție de rezervă pentru orice altceva ridică biblioteca. - Verificați
Form.IsXfasauForm.Typeînainte de a apela metode specifice XFA pentru a evitaInvalidFormTypeOperationException. - Căutați fonturile cu
FontRepository.FindFontînainte de randare, astfel încât fonturile lipsă să poată fi gestionate explicit, în loc să vă bazați exclusiv pe gestionarea excepțiilor. - Când un
PdfExceptionneașteptat ajunge la gestionarul de nivel superior, creați unCrashReportOptionscu excepția prinsă și apelațiex.GenerateCrashReport(options)pentru a captura un raport de diagnosticare pentru cererile de suport. - Întotdeauna treceți parola documentului prin suprasarcina constructorului
Documentîn loc să deschideți fișierul mai întâi și să reîncercați.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
InvalidPasswordException la deschiderea documentului | Parolă incorectă sau lipsă furnizată | Transmiteți parola corectă constructorului Document(filename, password) |
InvalidPdfFileFormatException la deschiderea documentului | Fișierul nu este PDF, sau este corupt sau trunchiat | Verificați antetul fișierului și obțineți din nou fișierul sursă |
FontNotFoundException în timpul redării | Fontul solicitat nu este instalat și nu există niciun substitut înregistrat | Înregistrați o sursă de fonturi sau verificați FontRepository.Substitutions |
UnsupportedFontTypeException din FontRepository.OpenFont | Fișierul furnizat nu este un program de font recunoscut | Confirmați că fișierul este un font valid înainte de a-l deschide |
InvalidFormTypeOperationException în operațiuni de formular | Metodă specifică XFA apelată pe un formular non-XFA, sau invers | Verificaţi Form.IsXfa sau Form.Type înainte de a apela metodele specifice tipului |
FAQ
Ar trebui să prind PdfException sau subclasa specifică?
Prinde subclasa specifică, cum ar fi InvalidPasswordException, atunci când trebuie să reacționezi diferit la acea eroare. Adaugă un bloc final catch (PdfException) ca rezervă pentru orice altă eroare generată de bibliotecă.
Toate excepțiile specifice PDF derivă din PdfException?
Da. PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException și InvalidFormTypeOperationException derivă toate din PdfException, care la rândul său derivă din System.Exception.
Pentru ce este PdfExceptionMessages?
PdfExceptionMessages este o clasă statică care centralizează șirurile de mesaje afișate de excepțiile bibliotecii și diagnosticele de securitate, inclusiv mesajul DangerousFile.
Pot genera un raport de diagnostic când apare o excepție?
Da. Construiește o instanță CrashReportOptions cu excepția prinsă, opțional setează proprietăți precum ApplicationTitle și CrashReportDirectory, și apelează GenerateCrashReport(options) pe PdfException pentru a scrie un raport detaliat de eroare.
API Reference Rezumat
| Clasă | Descriere: |
|---|---|
PdfException | Excepție de bază pentru erorile care apar în timpul execuției aplicației PDF |
PdfTextDecodingException | Aruncată când conținutul textului nu poate fi decodat |
IncorrectFontUsageException | Aruncată când apare un operator de afișare a textului fără niciun font setat în starea grafică |
InvalidPasswordException | Aruncat când se încearcă o operație protejată prin parolă fără o parolă validă |
InvalidPdfFileFormatException | Aruncat când un flux nu poate fi deschis ca PDF |
FontNotFoundException | Aruncat când fontul solicitat nu poate fi găsit |
UnsupportedFontTypeException | Aruncată când un fișier nu poate fi deschis ca font deoarece formatul său nu este acceptat |
InvalidFormTypeOperationException | Aruncată când se încearcă o operație asupra tipului greșit de formular |
PdfExceptionMessages | Șiruri de mesaje centralizate afișate de excepțiile și diagnosticele de securitate ale bibliotecii |