Gestionarea excepţiilor

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 final catch (PdfException) doar ca o soluție de rezervă pentru orice altceva ridică biblioteca.
  • Verificați Form.IsXfa sau Form.Type înainte de a apela metode specifice XFA pentru a evita InvalidFormTypeOperationException.
  • 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 PdfException neașteptat ajunge la gestionarul de nivel superior, creați un CrashReportOptions cu excepția prinsă și apelați ex.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 documentuluiParolă incorectă sau lipsă furnizatăTransmiteți parola corectă constructorului Document(filename, password)
InvalidPdfFileFormatException la deschiderea documentuluiFișierul nu este PDF, sau este corupt sau trunchiatVerificați antetul fișierului și obțineți din nou fișierul sursă
FontNotFoundException în timpul redăriiFontul solicitat nu este instalat și nu există niciun substitut înregistratÎnregistrați o sursă de fonturi sau verificați FontRepository.Substitutions
UnsupportedFontTypeException din FontRepository.OpenFontFișierul furnizat nu este un program de font recunoscutConfirmați că fișierul este un font valid înainte de a-l deschide
InvalidFormTypeOperationException în operațiuni de formularMetodă specifică XFA apelată pe un formular non-XFA, sau inversVerificaţ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:
PdfExceptionExcepție de bază pentru erorile care apar în timpul execuției aplicației PDF
PdfTextDecodingExceptionAruncată când conținutul textului nu poate fi decodat
IncorrectFontUsageExceptionAruncată când apare un operator de afișare a textului fără niciun font setat în starea grafică
InvalidPasswordExceptionAruncat când se încearcă o operație protejată prin parolă fără o parolă validă
InvalidPdfFileFormatExceptionAruncat când un flux nu poate fi deschis ca PDF
FontNotFoundExceptionAruncat când fontul solicitat nu poate fi găsit
UnsupportedFontTypeExceptionAruncată când un fișier nu poate fi deschis ca font deoarece formatul său nu este acceptat
InvalidFormTypeOperationExceptionAruncată 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

Vezi și:

 Română