Διαχείριση Εξαίρεσης

Διαχείριση Εξαίρεσης

Διαχείριση Εξαίρεσεων

Αυτός ο οδηγός δείχνει πώς το Aspose.PDF FOSS για .NET σηματοδοτεί αποτυχίες μέσω μιας τυποποιημένης ιεραρχίας εξαιρέσεων που έχει ρίζα στο PdfException, το οποίο με τη σειρά του κληρονομεί από το System.Exception, και πώς να πιάσετε κάθε κατηγορία σφάλματος. Κάθε εξαίρεση ειδική για PDF στη βιβλιοθήκη — λανθασμένος κωδικός πρόσβασης, μη αναγνώσιμο αρχείο, ελλείπουσα γραμματοσειρά ή μη έγκυρη λειτουργία φόρμας — κληρονομεί από το PdfException, έτσι η σύλληψη του PdfException μόνη της είναι αρκετή για να παρεμποδίσει οποιοδήποτε σφάλμα που προκαλεί η βιβλιοθήκη, ενώ πιο συγκεκριμένα μπλοκ catch σας επιτρέπουν να αντιδράτε διαφορετικά σε κάθε τρόπο αποτυχίας.


Σφάλματα Κωδικού Πρόσβασης και Ασφάλειας

InvalidPasswordException εκτοξεύεται όταν επιχειρείται μια λειτουργία προστατευμένη με κωδικό πρόσβασης χωρίς την παροχή έγκυρου κωδικού, όπως το άνοιγμα ενός κρυπτογραφημένου εγγράφου με λανθασμένο κωδικό.

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

Σφάλματα Μορφής Αρχείου

InvalidPdfFileFormatException εκτοξεύεται όταν ένα ρεύμα δεν μπορεί να ανοιχθεί ως PDF — κακή κεφαλίδα, αποκομμένο αρχείο ή περιεχόμενο που δεν είναι καθόλου αναγνωρίσιμο ως PDF.

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

Σφάλματα Γραμματοσειράς

Τα σφάλματα που σχετίζονται με γραμματοσειρές χωρίζονται σε τρεις ξεχωριστούς τύπους εξαιρέσεων, ανάλογα με το τι πήγε στραβά:

  • FontNotFoundException — καμία συστηματική γραμματοσειρά ή προσαρμοσμένη πηγή γραμματοσειράς δεν ταιριάζει με το ζητούμενο όνομα γραμματοσειράς.
  • UnsupportedFontTypeException — το αρχείο που παρέχεται ως γραμματοσειρά δεν είναι αναγνωρισμένο πρόγραμμα γραμματοσειράς.
  • IncorrectFontUsageException — ένας τελεστής εμφάνισης κειμένου εμφανίζεται σε ροή περιεχομένου ενώ δεν έχει οριστεί γραμματοσειρά στην τρέχουσα κατάσταση γραφικών.
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}");
}

Σφάλματα Εξαγωγής Κειμένου

PdfTextDecodingException εκτοξεύεται όταν το κείμενο δεν μπορεί να αποκωδικοποιηθεί, για παράδειγμα όταν η κωδικοποίηση που αναφέρεται από μια γραμματοσειρά λείπει ή είναι κατεστραμμένη.

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

Σφάλματα Τύπου Φόρμας

InvalidFormTypeOperationException εκτοξεύεται όταν επιχειρείται μια λειτουργία στον λανθασμένο τύπο φόρμας — για παράδειγμα, κλήση μεθόδου ειδικής για XFA σε φόρμα που δεν βασίζεται σε XFA.

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

Συμβουλές και Καλές Πρακτικές

  • Πιάστε πρώτα τον πιο συγκεκριμένο τύπο εξαίρεσης (για παράδειγμα, InvalidPasswordException) και προσθέστε ένα τελικό μπλοκ catch (PdfException) μόνο ως εναλλακτική λύση για οτιδήποτε άλλο προκαλεί η βιβλιοθήκη.
  • Ελέγξτε το Form.IsXfa ή το Form.Type πριν καλέσετε μεθόδους ειδικές για XFA ώστε να αποφύγετε το InvalidFormTypeOperationException.
  • Αναζητήστε τις γραμματοσειρές με FontRepository.FindFont πριν από την απόδοση, ώστε οι ελλιπείς γραμματοσειρές να μπορούν να αντιμετωπίζονται ρητά, αντί να βασίζεστε αποκλειστικά στη διαχείριση εξαιρέσεων.
  • Όταν ένα απροσδόκητο PdfException φτάσει στον ανώτερο χειριστή σας, δημιουργήστε ένα CrashReportOptions με την πιασμένη εξαίρεση και καλέστε το ex.GenerateCrashReport(options) για να καταγράψετε μια διαγνωστική αναφορά για αιτήματα υποστήριξης.
  • Πάντα να περνάτε τον κωδικό πρόσβασης του εγγράφου μέσω του υπερφορτωμένου κατασκευαστή Document αντί να ανοίγετε το αρχείο πρώτα και να προσπαθείτε ξανά.

Συνηθισμένα Προβλήματα

ΠρόβλημαΑιτίαΔιόρθωση
InvalidPasswordException κατά το άνοιγμα του εγγράφουΔόθηκε λανθασμένος ή ελλιπής κωδικός πρόσβασηςΠεράστε τον σωστό κωδικό πρόσβασης στον κατασκευαστή Document(filename, password)
InvalidPdfFileFormatException κατά το άνοιγμα του εγγράφουΤο αρχείο δεν είναι PDF, ή είναι κατεστραμμένο ή αποκομμένοΕπαληθεύστε την κεφαλίδα του αρχείου και αποκτήστε ξανά το αρχικό αρχείο
FontNotFoundException κατά τη διάρκεια της απόδοσηςΗ ζητούμενη γραμματοσειρά δεν είναι εγκατεστημένη και δεν έχει καταχωρηθεί υποκατάστατοΚαταχωρίστε μια πηγή γραμματοσειράς ή ελέγξτε το FontRepository.Substitutions
UnsupportedFontTypeException από FontRepository.OpenFontΤο παρεχόμενο αρχείο δεν είναι αναγνωρισμένο πρόγραμμα γραμματοσειράςΕπιβεβαιώστε ότι το αρχείο είναι έγκυρη γραμματοσειρά πριν το ανοίξετε
InvalidFormTypeOperationException σε λειτουργίες φόρμαςΜέθοδος ειδική για XFA κλήθηκε σε μη XFA φόρμα, ή το αντίστροφοΕλέγξτε το Form.IsXfa ή το Form.Type πριν καλέσετε μεθόδους ειδικές για τύπο

FAQ

Πρέπει να πιάσω PdfException ή την συγκεκριμένη υποκατηγορία;

Πιάσε την συγκεκριμένη υποκατηγορία, όπως το InvalidPasswordException, όταν χρειάζεται να αντιδράς διαφορετικά σε αυτήν την αποτυχία. Πρόσθεσε ένα τελικό μπλοκ catch (PdfException) ως εναλλακτική λύση για οποιοδήποτε άλλο σφάλμα που δημιουργείται από τη βιβλιοθήκη.

Προέρχονται όλες οι εξαιρέσεις ειδικές για PDF από το PdfException;

Ναι. Τα PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException και InvalidFormTypeOperationException προέρχονται όλα από το PdfException, το οποίο με τη σειρά του προέρχεται από το System.Exception.

Για ποιο σκοπό χρησιμοποιείται το PdfExceptionMessages;

Το PdfExceptionMessages είναι μια στατική κλάση που κεντρικοποιεί τις συμβολοσειρές μηνυμάτων που προβάλλονται από τις εξαιρέσεις της βιβλιοθήκης και τις διαγνωστικές ασφαλείας, συμπεριλαμβανομένου του μηνύματος DangerousFile.

Μπορώ να δημιουργήσω μια διαγνωστική αναφορά όταν συμβαίνει μια εξαίρεση;

Ναι. Δημιούργησε μια παρουσία του CrashReportOptions με την παγιδευμένη εξαίρεση, προαιρετικά όρισε ιδιότητες όπως ApplicationTitle και CrashReportDirectory, και κάλεσε το GenerateCrashReport(options) στο PdfException για να γράψεις μια λεπτομερή αναφορά κατάρρευσης.


API Reference Περίληψη

ΚλάσηΠεριγραφή
PdfExceptionΒασική εξαίρεση για σφάλματα κατά την εκτέλεση της εφαρμογής PDF
PdfTextDecodingExceptionΕκπεμπόμενο όταν το κείμενο δεν μπορεί να αποκωδικοποιηθεί
IncorrectFontUsageExceptionΕκπεμπόμενο όταν ένας τελεστής εμφάνισης κειμένου εμφανίζεται χωρίς να έχει οριστεί γραμματοσειρά στην κατάσταση γραφικών
InvalidPasswordExceptionΕμφανίζεται όταν επιχειρείται μια λειτουργία προστατευμένη με κωδικό πρόσβασης χωρίς έγκυρο κωδικό πρόσβασης
InvalidPdfFileFormatExceptionΕμφανίζεται όταν δεν μπορεί να ανοίξει μια ροή ως PDF
FontNotFoundExceptionΕμφανίζεται όταν δεν μπορεί να εντοπιστεί η ζητούμενη γραμματοσειρά
UnsupportedFontTypeExceptionΕμφανίζεται όταν δεν μπορεί να ανοιχτεί ένα αρχείο ως γραμματοσειρά επειδή η μορφή του δεν υποστηρίζεται
InvalidFormTypeOperationExceptionΕκτοξεύεται όταν προσπαθείται μια λειτουργία σε λανθασμένο τύπο φόρμας
PdfExceptionMessagesΚεντρικές συμβολοσειρές μηνυμάτων που προβάλλονται από τις εξαιρέσεις της βιβλιοθήκης και τις διαγνωστικές ασφαλείας

Δείτε επίσης

 Ελληνικά