Excepciones principales
Excepciones principales
La biblioteca informa fallos de carga y guardado mediante dos tipos de excepción dedicados: PsdLoadException y PsdSaveException, ambos extendiendo la clase estándar Exception.
PsdLoadException
Lanzada cuando Image.Load() / PsdImage.Load() no pueden analizar la entrada como un documento PSD o PSB válido.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Lanzada cuando PsdImage.Save() no puede escribir el documento.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Constructores
Ambos tipos de excepción tienen la misma estructura de dos constructores: un constructor solo con mensaje, y un constructor de mensaje más excepción interna para envolver una falla de nivel inferior.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Consejos y mejores prácticas
- Capture
PsdLoadExceptionalrededor de cada llamadaImage.Load()/PsdImage.Load()que procesa entrada externa. - Capture
PsdSaveExceptionalrededor de cada llamadaPsdImage.Save()si el destino (disco, flujo) podría no ser escribible. - Ambos tipos extienden
Exception, por lo que uncatch (Exception)más amplio también los captura — prefiere los tipos específicos cuando quiera distinguir fallas de carga de fallas de guardado.
Problemas comunes
| Problema | Causa | Solución |
|---|---|---|
PsdLoadException en un archivo que se abre bien en otras herramientas | La entrada no es un documento PSD/PSB válido, o utiliza una característica que el analizador de esta compilación FOSS no reconoce | Confirme que el archivo es un documento PSD/PSB auténtico; informe las características no compatibles por separado de los fallos de carga |
PsdSaveException al escribir en un flujo | El flujo de destino puede no ser escribible o ya haber sido descartado | Confirme que el flujo esté abierto y sea escribible antes de llamar a Save() |
FAQ
¿Esta biblioteca vuelve a intentar automáticamente después de una falla de carga o guardado?
No. PsdLoadException y PsdSaveException se lanzan una vez y deben ser manejados por el llamador; no hay reintento automático.
¿Puedo inspeccionar la causa original de una excepción envuelta?
Sí, cuando se proporciona — ambos constructores aceptan un parámetro innerException, accesible a través de la propiedad estándar Exception.InnerException.
API Reference Resumen
| Clase/Método | Descripción |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Se lanza cuando no se puede cargar un documento |
PsdSaveException(message) / PsdSaveException(message, innerException) | Se lanza cuando no se puede guardar un documento |