Cómo manejar excepciones de PSD Core en .NET

Cómo manejar excepciones de PSD Core en .NET

Aspose.PSD FOSS para .NET define dos tipos de excepción: PsdLoadException, lanzada al analizar un documento PSD/PSB, y PsdSaveException, lanzada al escribir uno. Ambas derivan de System.Exception y admiten un constructor solo de mensaje y un constructor de mensaje más excepción interna.

Guía paso a paso

Paso 1: Instalar el paquete

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build

Paso 2: Importar las clases requeridas

using Aspose.PSD.FileFormats.Psd;

Paso 3: Capturar fallos en tiempo de carga

PsdLoadException se lanza cuando la estructura de un documento no pasa la validación — por ejemplo, una versión de PSD/PSB no compatible, una longitud de sección que supera el límite declarado de la sección contenedora, o datos de flujo truncados:

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load PSD/PSB file: {ex.Message}");
}

Paso 4: Capturar fallas en tiempo de guardado

PsdSaveException se lanza al escribir un documento — por ejemplo, cuando un valor de cadena supera la longitud que puede contener un campo de cadena Pascal de PSD:

try
{
    image.Save("output.psd");
}
catch (PsdSaveException ex)
{
    Console.WriteLine($"Failed to save PSD/PSB file: {ex.Message}");
}

Paso 5: Inspeccionar una excepción interna

Ambos tipos de excepción tienen un constructor que envuelve una excepción interna (usado internamente, por ejemplo, cuando un error de E/S interrumpe la lectura de la estructura del archivo). Consulte InnerException para encontrar la causa subyacente:

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex) when (ex.InnerException != null)
{
    Console.WriteLine($"Underlying I/O error: {ex.InnerException.Message}");
}

Problemas comunes y soluciones

PsdLoadException con un mensaje sobre una versión no compatible. El campo de versión PSD declarado del archivo no corresponde ni al PSD estándar ni al valor PSB de documento grande. Confirme que el archivo es un documento PSD/PSB genuino y sin corrupción.

PsdLoadException con un mensaje sobre una longitud de sección que supera un límite. Los campos de longitud internos del archivo son inconsistentes con su tamaño real — esto suele indicar un archivo truncado o corrupto más que una variante no compatible.

PsdSaveException sobre la longitud de una cadena Pascal. Un valor de cadena (como el nombre de una capa o recurso) supera los 255 bytes, el máximo que un campo de cadena Pascal de PSD puede codificar. Reduzca el valor antes de guardar.

Preguntas Frecuentes

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

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

¿Puede PsdSaveException ocurrir por razones distintas a un valor de cadena largo?

El sitio de lanzamiento confirmado en esta compilación FOSS es la comprobación de longitud de cadena Pascal. Otras fallas de E/S en tiempo de guardado (por ejemplo, un flujo de destino que no se puede escribir) aparecen como el tipo de excepción subyacente .NET en lugar de estar envueltas en PsdSaveException.

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

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

Ver también

 Español