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
PsdLoadExceptionyPsdSaveExceptionespecíficamente en lugar delExceptionbase cuando necesite distinguir fallas de carga de fallas de guardado. ArgumentNullException(generado cuandoPsdImage.loadse llama con un flujoNone) yNotSupportedExceptionson tipos de excepción separados — no variantes dePsdLoadException/PsdSaveException.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
PsdLoadException sobre una versión no compatible | El campo de versión del archivo no corresponde ni al valor estándar PSD ni al PSB | Confirme que el archivo es un documento PSD/PSB auténtico y sin corrupción |
PsdSaveException sobre una longitud de cadena Pascal | El nombre de una capa o recurso supera los 255 bytes | Acorte 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étodo | Descripció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 |