Podstawowe wyjątki

Podstawowe wyjątki

Aspose.PSD FOSS dla Python definiuje dwa typy wyjątków specyficzne dla obsługi PSD/PSB: PsdLoadException, podnoszony podczas parsowania dokumentu, oraz PsdSaveException, podnoszony podczas zapisywania. Oba dziedziczą po wbudowanym Exception i przyjmują wiadomość oraz opcjonalny inner_exception.


Łapanie błędów w czasie ładowania

PsdLoadException jest podnoszony przy kilku błędach walidacji strukturalnej podczas parsowania dokumentu:

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}")

Typowe komunikaty obejmują "Invalid PSD signature. Expected '8BPS' (0x38425053)." (plik nie zaczyna się od sygnatury PSD/PSB), "Unsupported PSD version: {n}. ..." (pole wersji nie jest ani PSD, ani PSB) oraz "{section} length {n} exceeds the enclosing section boundary." (zadeklarowana długość sekcji jest niezgodna z rzeczywistym rozmiarem pliku).


Łapanie błędów w czasie zapisu

PsdSaveException ma jedyne miejsce podnoszenia w tej wersji FOSS — sprawdzenie długości ciągu 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}")

Jego komunikat to "PSD Pascal string length {n} exceeds the supported maximum 255." — podnoszony, gdy nazwa warstwy lub zasobu przekracza 255 bajtów.


Sprawdzanie wewnętrznego wyjątku

Oba typy wyjątków akceptują argument konstruktora inner_exception, wypełniany, gdy podstawowa awaria I/O spowodowała wyjątek:

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

Wzorzec NotSupportedException

Kilka setterów właściwości w innych miejscach w API zgłasza NotSupportedException zamiast PsdLoadException/PsdSaveException — to sygnalizuje właściwość, która jest celowo tylko do odczytu w tej wersji FOSS, a nie błąd parsowania lub zapisu. Zobacz Resources and Layers dla konkretnych właściwości, które są dotknięte.


Wskazówki i najlepsze praktyki

  • Przechwytuj PsdLoadException i PsdSaveException konkretnie, zamiast bazowego Exception, gdy musisz odróżnić błędy ładowania od błędów zapisu.
  • ArgumentNullException (podnoszony, gdy PsdImage.load jest wywoływany z None strumieniem) oraz NotSupportedException są odrębnymi typami wyjątków — nie wariantami PsdLoadException/PsdSaveException.

Typowe problemy

ProblemPrzyczynaNaprawa
PsdLoadException o nieobsługiwanej wersjiPole wersji pliku nie jest ani standardową wartością PSD, ani PSBPotwierdź, że plik jest autentycznym, nieuszkodzonym PSD/PSB dokumentem
PsdSaveException o długości łańcucha PascalNazwa warstwy lub zasobu przekracza 255 bajtówSkróć wartość przed zapisem

FAQ

Czy PsdLoadException i PsdSaveException mają wspólny bazowy typ wyjątku?

Nie — oba dziedziczą bezpośrednio z wbudowanego Exception, nie z siebie nawzajem ani ze wspólnej klasy bazowej Aspose.PSD.

Czy przechwycenie Exception również przechwyci te dwa typy?

Tak, ponieważ oba dziedziczą po Exception — ale przechwycenie konkretnych typów pozwala odróżnić błędy ładowania od błędów zapisu.


Podsumowanie API Reference

Klasa/MetodaOpis
PsdLoadException(message, inner_exception=None)Wystąpiło podczas parsowania dokumentu
PsdSaveException(message, inner_exception=None)Zgłaszane podczas tworzenia dokumentu
NotSupportedException(message, inner_exception=None)Zgłaszane przez settery w trybie tylko do odczytu w tej wersji FOSS

Zobacz także

 Polski