Κύριες Εξαιρέσεις

Κύριες Εξαιρέσεις

Βασικές Εξαιρέσεις

Aspose.PSD FOSS για Python ορίζει δύο τύπους εξαιρέσεων ειδικούς για τη διαχείριση PSD/PSB: PsdLoadException, που δημιουργείται κατά την ανάλυση ενός εγγράφου, και PsdSaveException, που δημιουργείται κατά την εγγραφή ενός. Και οι δύο κληρονομούν από το ενσωματωμένο Exception και δέχονται ένα μήνυμα συν ένα προαιρετικό inner_exception.


Σύλληψη Σφαλμάτων Κατά τη Φόρτωση

PsdLoadException δημιουργείται για αρκετές αποτυχίες δομικής επικύρωσης κατά την ανάλυση ενός εγγράφου:

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    print(f"Failed to load PSD/PSB file: {ex}")

Κοινά μηνύματα περιλαμβάνουν "Invalid PSD signature. Expected '8BPS' (0x38425053)." (το αρχείο δεν αρχίζει με μια υπογραφή PSD/PSB), "Unsupported PSD version: {n}. ..." (το πεδίο έκδοσης δεν είναι ούτε PSD ούτε PSB), και "{section} length {n} exceeds the enclosing section boundary." (το δηλωμένο μήκος μιας ενότητας είναι ασυνεπές με το πραγματικό μέγεθος του αρχείου).


Σύλληψη Σφαλμάτων Κατά την Αποθήκευση

PsdSaveException έχει ένα μοναδικό σημείο δημιουργίας σε αυτήν την κατασκευή FOSS — έλεγχο μήκους Pascal-string:

from aspose_psd_foss.coreexceptions.psdsaveexception import PsdSaveException

try:
    image.save(output_path)
except PsdSaveException as ex:
    print(f"Failed to save PSD/PSB file: {ex}")

Το μήνυμά του είναι "PSD Pascal string length {n} exceeds the supported maximum 255." — ανυψώνεται όταν ένα όνομα στρώσης ή πόρου υπερβαίνει τα 255 bytes.


Επιθεώρηση μιας Εσωτερικής Εξαίρεσης

Και οι δύο τύποι εξαίρεσης δέχονται ένα όρισμα κατασκευής inner_exception, το οποίο γεμίζει όταν μια υποκείμενη αποτυχία I/O προκάλεσε την εξαίρεση:

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    if ex.inner_exception is not None:
        print(f"Underlying cause: {ex.inner_exception}")

Το Μοτίβο NotSupportedException

Πολλοί setter ιδιοτήτων αλλού στο API προκαλούν NotSupportedException αντί για PsdLoadException/PsdSaveException — αυτό υποδεικνύει μια ιδιότητα που είναι σκόπιμα μόνο για ανάγνωση σε αυτήν την έκδοση FOSS, όχι σφάλμα ανάλυσης ή γραφής. Δείτε Resources and Layers για τις συγκεκριμένες ιδιότητες που επηρεάζονται.


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

  • Συλλάβετε PsdLoadException και PsdSaveException συγκεκριμένα αντί για τη βασική Exception όταν χρειάζεται να διακρίνετε αποτυχίες φόρτωσης από αποτυχίες αποθήκευσης.
  • ArgumentNullException (ανυψώνεται όταν το PsdImage.load κληθεί με μια ροή None) και NotSupportedException είναι ξεχωριστοί τύποι εξαίρεσης — δεν είναι παραλλαγές των PsdLoadException/PsdSaveException.

Κοινά Προβλήματα

ΖήτημαΑιτίαΔιόρθωση
PsdLoadException σχετικά με μια μη υποστηριζόμενη έκδοσηΤο πεδίο έκδοσης του αρχείου δεν είναι ούτε η τυπική τιμή PSD ούτε η τιμή PSBΕπιβεβαιώστε ότι το αρχείο είναι ένα γνήσιο, μη κατεστραμμένο PSD/PSB έγγραφο
PsdSaveException σχετικά με το μήκος μιας συμβολοσειράς PascalΈνα όνομα στρώσης ή πόρου υπερβαίνει τα 255 bytesΜειώστε την τιμή πριν την αποθήκευση

FAQ

Μοιράζονται τα PsdLoadException και PsdSaveException έναν κοινό βασικό τύπο εξαίρεσης;

Όχι — και τα δύο κληρονομούν απευθείας το ενσωματωμένο Exception, όχι το ένα από το άλλο ή μια κοινή βασική κλάση εξαίρεσης Aspose.PSD.

Θα πιάσει η σύλληψη του Exception επίσης αυτούς τους δύο τύπους;

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


API Reference Σύνοψη

Κλάση/ΜέθοδοςΠεριγραφή
PsdLoadException(message, inner_exception=None)Εγείρεται κατά την ανάλυση του εγγράφου
PsdSaveException(message, inner_exception=None)Ανακλήθηκε κατά τη σύνταξη του εγγράφου
NotSupportedException(message, inner_exception=None)Ανακλήθηκε από τους setters read-only-in-this-FOSS-build

Δείτε επίσης

 Ελληνικά