Excepciones principales

Excepciones principales

Aspose.PSD FOSS para Python define dos tipos de excepción específicos para el manejo de PSD/PSB: PsdLoadException, lanzada al analizar un documento, y PsdSaveException, lanzada al guardarlo. Ambas derivan del Exception incorporado y aceptan un mensaje más un inner_exception opcional.


Capturando fallos de carga

PsdLoadException se lanza por varios fallos de validación estructural al analizar un documento:

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}")

Los mensajes comunes incluyen "Invalid PSD signature. Expected '8BPS' (0x38425053)." (el archivo no comienza con una firma PSD/PSB), "Unsupported PSD version: {n}. ..." (el campo de versión no es ni PSD ni PSB) y "{section} length {n} exceeds the enclosing section boundary." (la longitud declarada de una sección es inconsistente con el tamaño real del archivo).


Capturando fallos de guardado

PsdSaveException tiene un único punto de lanzamiento en esta compilación FOSS — una comprobación de longitud de cadena 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}")

Su mensaje es "PSD Pascal string length {n} exceeds the supported maximum 255." — generado cuando el nombre de una capa o recurso supera los 255 bytes.


Inspeccionando una Excepción Interna

Ambos tipos de excepción aceptan un argumento de constructor inner_exception, rellenado cuando una falla subyacente de I/O provocó la excepción:

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

El Patrón NotSupportedException

Varios establecedores de propiedades en otras partes del API generan NotSupportedException en lugar de PsdLoadException/PsdSaveException — esto indica una propiedad que es intencionalmente de solo lectura en esta compilación FOSS, no un fallo de análisis o escritura. Ver Resources and Layers para las propiedades específicas afectadas.


Consejos y Buenas Prácticas

  • Capture PsdLoadException y PsdSaveException específicamente en lugar del Exception base cuando necesite distinguir fallas de carga de fallas de guardado.
  • ArgumentNullException (generado cuando PsdImage.load se llama con un flujo None) y NotSupportedException son tipos de excepción separados — no variantes de PsdLoadException/PsdSaveException.

Problemas comunes

ProblemaCausaSolución
PsdLoadException sobre una versión no compatibleEl campo de versión del archivo no corresponde ni al valor estándar PSD ni al PSBConfirme que el archivo es un documento PSD/PSB auténtico y sin corrupción
PsdSaveException sobre una longitud de cadena PascalEl nombre de una capa o recurso supera los 255 bytesAcorte el valor antes de guardar

FAQ

¿PsdLoadException y PsdSaveException comparten un tipo de excepción base común?

No — ambos derivan directamente del Exception incorporado, no el uno del otro ni de una clase base de excepción Aspose.PSD compartida.

¿Capturar Exception también capturará estos dos tipos?

Sí, ya que ambos derivan de Exception — pero capturar los tipos específicos te permite distinguir fallos de carga de fallos de guardado.


Resumen de API Reference

Clase/MétodoDescripción
PsdLoadException(message, inner_exception=None)Generado durante el análisis del documento
PsdSaveException(message, inner_exception=None)Generado durante la escritura del documento
NotSupportedException(message, inner_exception=None)Generado por los setters read-only-in-this-FOSS-build

Ver también

 Español