Excepții de bază
Excepții de bază
Aspose.PSD FOSS pentru Python definește două tipuri de excepții specifice gestionării PSD/PSB: PsdLoadException, ridicată în timpul parsării unui document, și PsdSaveException, ridicată în timpul scrierii unuia. Ambele derivă din Exception încorporat și acceptă un mesaj plus un inner_exception opțional.
Capturarea erorilor la încărcare
PsdLoadException este ridicată pentru mai multe eșecuri de validare structurală în timpul parsării unui document:
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}")Mesajele comune includ "Invalid PSD signature. Expected '8BPS' (0x38425053)." (fișierul nu începe cu o semnătură PSD/PSB), "Unsupported PSD version: {n}. ..." (câmpul de versiune nu este nici PSD, nici PSB) și "{section} length {n} exceeds the enclosing section boundary." (lungimea declarată a unei secțiuni este inconsistentă cu dimensiunea reală a fișierului).
Capturarea erorilor la salvare
PsdSaveException are un singur loc de ridicare în această construcție FOSS — o verificare a lungimii șirului Pascal:
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}")Mesajul său este "PSD Pascal string length {n} exceeds the supported maximum 255." — ridicat când un nume de strat sau de resursă depășește 255 de bytes.
Inspectarea unei excepții interne
Ambele tipuri de excepții acceptă un argument constructor inner_exception, populat când o eroare I/O subiacentă a cauzat excepția:
try:
image = PsdImage.load(input_path)
except PsdLoadException as ex:
if ex.inner_exception is not None:
print(f"Underlying cause: {ex.inner_exception}")Modelul NotSupportedException
Mai multe setări de proprietate în alte părţi ale API ridică NotSupportedException în loc de PsdLoadException/PsdSaveException — acest lucru semnalează o proprietate care este intenționat doar citire în această versiune FOSS, nu o eroare de parsare sau scriere. Vezi Resources and Layers pentru proprietățile specifice afectate.
Sfaturi și cele mai bune practici
- Prindeți
PsdLoadExceptionșiPsdSaveExceptionîn mod specific în loc de bazaExceptioncând trebuie să distingeți eșecurile de încărcare de cele de salvare. ArgumentNullException(ridicat cândPsdImage.loadeste apelat cu un fluxNone) șiNotSupportedExceptionsunt tipuri de excepții separate — nu variante alePsdLoadException/PsdSaveException.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
PsdLoadException despre o versiune nesuportată | Câmpul de versiune al fișierului nu este nici valoarea standard PSD, nici valoarea PSB | Confirmați că fișierul este un document PSD/PSB autentic și necorupt |
PsdSaveException despre o lungime de șir Pascal | Numele unui strat sau al unei resurse depășește 255 de octeți | Scurtați valoarea înainte de a salva |
FAQ
Împărtășesc PsdLoadException și PsdSaveException un tip de excepție de bază comun?
Nu — ambele derivă direct din Exception încorporat, nu una din cealaltă sau dintr-o clasă de excepție de bază Aspose.PSD comună.
Va prinde Exception și aceste două tipuri?
Da, deoarece ambele derivă din Exception — dar capturarea tipurilor specifice îți permite să diferențiezi eșecurile de încărcare de cele de salvare.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
PsdLoadException(message, inner_exception=None) | Generat în timpul parsării documentului |
PsdSaveException(message, inner_exception=None) | Generat în timpul scrierii documentului |
NotSupportedException(message, inner_exception=None) | Generat de setatorii read-only-in-this-FOSS-build |