Κύριες Εξαιρέσεις
Βασικές Εξαιρέσεις
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 |