Exceções Principais

Exceções Principais

Aspose.PSD FOSS para Python define dois tipos de exceção específicos ao tratamento de PSD/PSB: PsdLoadException, gerada ao analisar um documento, e PsdSaveException, gerada ao gravar um. Ambas derivam da Exception interna e aceitam uma mensagem mais um inner_exception opcional.


Capturando Falhas no Momento de Carregamento

PsdLoadException é gerada para várias falhas de validação estrutural ao analisar um 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}")

Mensagens comuns incluem "Invalid PSD signature. Expected '8BPS' (0x38425053)." (o arquivo não começa com uma assinatura PSD/PSB), "Unsupported PSD version: {n}. ..." (o campo de versão não é nem PSD nem PSB) e "{section} length {n} exceeds the enclosing section boundary." (o comprimento declarado de uma seção é inconsistente com o tamanho real do arquivo).


Capturando Falhas no Momento de Salvamento

PsdSaveException tem um único ponto de geração nesta compilação FOSS — uma verificação de comprimento de string 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}")

Sua mensagem é "PSD Pascal string length {n} exceeds the supported maximum 255." — levantada quando o nome de uma camada ou recurso excede 255 bytes.


Inspecionando uma Exceção Interna

Ambos os tipos de exceção aceitam um argumento de construtor inner_exception, preenchido quando uma falha subjacente de I/O provocou a exceção:

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    if ex.inner_exception is not None:
        print(f"Underlying cause: {ex.inner_exception}")

O padrão NotSupportedException

Vários definidores de propriedades em outras partes do API geram NotSupportedException em vez de PsdLoadException/PsdSaveException — isso indica uma propriedade que é intencionalmente somente leitura nesta compilação FOSS, não uma falha de análise ou gravação. Veja Resources and Layers para as propriedades específicas afetadas.


Dicas e Melhores Práticas

  • Capture PsdLoadException e PsdSaveException especificamente em vez da base Exception quando precisar distinguir falhas de carregamento de falhas de gravação.
  • ArgumentNullException (levantada quando PsdImage.load é chamada com um fluxo None) e NotSupportedException são tipos de exceção separados — não variantes de PsdLoadException/PsdSaveException.

Problemas Comuns

ProblemaCausaCorreção
PsdLoadException sobre uma versão não suportadaO campo de versão do arquivo não é nem o valor padrão PSD nem o PSBConfirme que o arquivo é um documento PSD/PSB genuíno e sem corrupção
PsdSaveException sobre o comprimento de uma string PascalUm nome de camada ou recurso excede 255 bytesReduza o valor antes de salvar

FAQ

Os PsdLoadException e PsdSaveException compartilham um tipo de exceção base comum?

Não — ambos derivam diretamente do Exception interno, não um do outro nem de uma classe de exceção base Aspose.PSD compartilhada.

Capturar Exception também capturará esses dois tipos?

Sim, já que ambos derivam de Exception — mas capturar os tipos específicos permite distinguir falhas de carregamento de falhas de gravação.


Resumo de API Reference

Classe/MétodoDescrição
PsdLoadException(message, inner_exception=None)Gerado durante a análise do documento
PsdSaveException(message, inner_exception=None)Gerado durante a escrita do documento
NotSupportedException(message, inner_exception=None)Gerado por definidores read-only-in-this-FOSS-build

Ver também

 Português