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 PsdLoadException ao redor de cada chamada Image.Load()/PsdImage.Load() que processa entrada externa.
  • Capture PsdSaveException ao redor de cada chamada PsdImage.Save() se o destino (disco, fluxo) puder não ser gravável.
  • Ambos os tipos estendem Exception, portanto um catch (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

ProblemaCausaCorreção
PsdLoadException em um arquivo que abre corretamente em outras ferramentasA entrada não é um documento PSD/PSB válido, ou usa um recurso que o analisador desta compilação FOSS não reconheceConfirme que o arquivo é um documento PSD/PSB genuíno; reporte recursos não suportados separadamente das falhas de carregamento
PsdSaveException ao escrever em um fluxoO fluxo de destino pode não ser gravável ou pode já ter sido descartadoConfirme 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étodoDescriçã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

Ver também

 Português