Exceptions de base
Exceptions de base
Aspose.PSD FOSS pour Python définit deux types d’exception spécifiques à la gestion de PSD/PSB : PsdLoadException, levée lors de l’analyse d’un document, et PsdSaveException, levée lors de son écriture. Les deux dérivent de la classe intégrée Exception et acceptent un message ainsi qu’un inner_exception optionnel.
Capture des échecs de chargement
PsdLoadException est levée pour plusieurs échecs de validation structurelle lors de l’analyse d’un 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}")Les messages courants incluent "Invalid PSD signature. Expected '8BPS' (0x38425053)." (le fichier ne commence pas par une signature PSD/PSB), "Unsupported PSD version: {n}. ..." (le champ de version n’est ni PSD ni PSB), et "{section} length {n} exceeds the enclosing section boundary." (la longueur déclarée d’une section est incohérente avec la taille réelle du fichier).
Capture des échecs d’enregistrement
PsdSaveException a un seul point de levée dans cette construction FOSS — une vérification de la longueur d’une chaîne 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}")Son message est "PSD Pascal string length {n} exceeds the supported maximum 255." — levé lorsque le nom d’une couche ou d’une ressource dépasse 255octets.
Examen d’une exception interne
Les deux types d’exception acceptent un argument de constructeur inner_exception, rempli lorsqu’une défaillance d’E/S sous-jacente a provoqué l’exception:
try:
image = PsdImage.load(input_path)
except PsdLoadException as ex:
if ex.inner_exception is not None:
print(f"Underlying cause: {ex.inner_exception}")Le motif NotSupportedException
Plusieurs mutateurs de propriétés ailleurs dans le API lèvent NotSupportedException plutôt que PsdLoadException/PsdSaveException — cela indique une propriété qui est intentionnellement en lecture seule dans cette version FOSS, et non une erreur d’analyse ou d’écriture. Voir Resources and Layers pour les propriétés spécifiques concernées.
Conseils et meilleures pratiques
- Capturez spécifiquement
PsdLoadExceptionetPsdSaveExceptionplutôt que la classe de baseExceptionlorsque vous devez distinguer les échecs de chargement des échecs d’enregistrement. ArgumentNullException(levé lorsquePsdImage.loadest appelé avec un fluxNone) etNotSupportedExceptionsont des types d’exception distincts — pas des variantes dePsdLoadException/PsdSaveException.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
PsdLoadException à propos d’une version non prise en charge | Le champ de version du fichier n’est ni la valeur standard PSD ni PSB | Confirmez que le fichier est un document PSD/PSB authentique et non corrompu |
PsdSaveException concernant une longueur de chaîne Pascal | Le nom d’un calque ou d’une ressource dépasse 255 octets | Raccourcissez la valeur avant de l’enregistrer |
FAQ
Les PsdLoadException et PsdSaveException partagent-ils un type d’exception de base commun ?
Non — les deux dérivent directement du Exception intégré, pas l’un de l’autre ni d’une classe d’exception de base Aspose.PSD partagée.
Le fait d’intercepter Exception interceptera-t-il également ces deux types ?
Oui, puisque les deux dérivent de Exception — mais intercepter les types spécifiques vous permet de différencier les échecs de chargement des échecs d’enregistrement.
API Reference Résumé
| Classe/Méthode | Description |
|---|---|
PsdLoadException(message, inner_exception=None) | Levé lors de l’analyse du document |
PsdSaveException(message, inner_exception=None) | Soulevé lors de la rédaction du document |
NotSupportedException(message, inner_exception=None) | Soulevé par les setters en lecture seule dans cette construction FOSS |