Exceções Principais
Exceções Principais
A biblioteca relata falhas de carregamento e gravação por meio de dois tipos de exceção dedicados: PsdLoadException e PsdSaveException, ambos estendendo a classe padrão Exception.
PsdLoadException
Lançada quando Image.Load() / PsdImage.Load() não conseguem analisar a entrada como um documento PSD ou PSB válido.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Lançada quando PsdImage.Save() não consegue gravar o documento.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Construtores
Ambos os tipos de exceção têm a mesma estrutura de dois construtores: um construtor apenas com mensagem e um construtor com mensagem mais exceção interna para envolver uma falha de nível inferior.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Dicas e Melhores Práticas
- Capture
PsdLoadExceptionao redor de cada chamadaImage.Load()/PsdImage.Load()que processa entrada externa. - Capture
PsdSaveExceptionao redor de cada chamadaPsdImage.Save()se o destino (disco, fluxo) puder não ser gravável. - Ambos os tipos estendem
Exception, portanto umcatch (Exception)mais amplo também os captura — prefira os tipos específicos quando quiser distinguir falhas de carregamento das falhas de gravação.
Problemas Comuns
| Problema | Causa | Correção |
|---|---|---|
PsdLoadException em um arquivo que abre corretamente em outras ferramentas | A entrada não é um documento PSD/PSB válido, ou usa um recurso que o analisador desta compilação FOSS não reconhece | Confirme que o arquivo é um documento PSD/PSB genuíno; reporte recursos não suportados separadamente das falhas de carregamento |
PsdSaveException ao escrever em um fluxo | O fluxo de destino pode não ser gravável ou pode já ter sido descartado | Confirme se o fluxo está aberto e gravável antes de chamar Save() |
FAQ
Esta biblioteca tenta novamente automaticamente após uma falha de carregamento ou gravação?
Não. PsdLoadException e PsdSaveException são disparados uma única vez e devem ser tratados pelo chamador; não há tentativa automática.
Posso inspecionar a causa original de uma exceção encapsulada?
Sim, quando fornecida — ambos os construtores aceitam um parâmetro innerException, acessível por meio da propriedade padrão Exception.InnerException.
API Reference Resumo
| Classe/Método | Descrição |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Lançada quando um documento não pode ser carregado |
PsdSaveException(message) / PsdSaveException(message, innerException) | Lançada quando um documento não pode ser salvo |