Κύριες Εξαιρέσεις
Κύριες Εξαιρέσεις
Η βιβλιοθήκη αναφέρει αποτυχίες φόρτωσης και αποθήκευσης μέσω δύο ειδικών τύπων εξαιρέσεων: PsdLoadException και PsdSaveException, οι οποίοι κληρονομούν την τυπική κλάση Exception.
PsdLoadException
Εκτοξεύεται όταν το Image.Load() / PsdImage.Load() δεν μπορεί να αναλύσει την είσοδο ως έγκυρο έγγραφο PSD ή PSB.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Εκτοξεύεται όταν το PsdImage.Save() δεν μπορεί να γράψει το έγγραφο.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Κατασκευαστές
Και οι δύο τύποι εξαιρέσεων έχουν την ίδια μορφή δύο κατασκευαστών: έναν κατασκευαστή μόνο με μήνυμα και έναν κατασκευαστή μήνυμα-συν-εσωτερική-εξαίρεση για την περιτύλιξη μιας αποτυχίας χαμηλότερου επιπέδου.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Συμβουλές και Καλές Πρακτικές
- Πιάνετε
PsdLoadExceptionγύρω από κάθε κλήσηImage.Load()/PsdImage.Load()που επεξεργάζεται εξωτερική είσοδο. - Πιάνετε
PsdSaveExceptionγύρω από κάθε κλήσηPsdImage.Save()εάν ο προορισμός (δίσκος, ροή) ενδέχεται να μην είναι εγγράψιμος. - Και οι δύο τύποι επεκτείνουν το
Exception, έτσι ένα πιο γενικόcatch (Exception)τα πιάνει επίσης — προτιμήστε τους συγκεκριμένους τύπους όταν θέλετε να διακρίνετε αποτυχίες φόρτωσης από αποτυχίες αποθήκευσης.
Συνηθισμένα Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
PsdLoadException σε ένα αρχείο που ανοίγει κανονικά σε άλλα εργαλεία | Η είσοδος δεν είναι έγκυρο έγγραφο PSD/PSB, ή χρησιμοποιεί μια δυνατότητα που ο αναλυτής αυτής της έκδοσης FOSS δεν αναγνωρίζει | Επιβεβαιώστε ότι το αρχείο είναι ένα αυθεντικό έγγραφο PSD/PSB; αναφέρετε τις μη υποστηριζόμενες δυνατότητες ξεχωριστά από τις αποτυχίες φόρτωσης |
PsdSaveException κατά τη γραφή σε ροή | Η ροή προορισμού μπορεί να μην είναι εγγράψιμη ή να έχει ήδη διαγραφεί | Επιβεβαιώστε ότι η ροή είναι ανοιχτή και εγγράψιμη πριν καλέσετε το Save() |
FAQ
Επαναπροσπαθεί αυτή η βιβλιοθήκη αυτόματα μετά από αποτυχία φόρτωσης ή αποθήκευσης;
Όχι. Τα PsdLoadException και PsdSaveException εγείρονται μία φορά και πρέπει να αντιμετωπιστούν από τον καλούντα· δεν υπάρχει αυτόματη επαναπροσπάθεια.
Μπορώ να εξετάσω την αρχική αιτία μιας τυλιγμένης εξαίρεσης;
Ναι, όταν παρέχεται — και οι δύο κατασκευαστές δέχονται μια παράμετρο innerException, προσβάσιμη μέσω της τυπικής ιδιότητας Exception.InnerException.
API Reference Σύνοψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Δημιουργείται όταν δεν είναι δυνατόν να φορτωθεί ένα έγγραφο |
PsdSaveException(message) / PsdSaveException(message, innerException) | Δημιουργείται όταν δεν είναι δυνατόν να αποθηκευτεί ένα έγγραφο |