Основні виключення

Основні виключення

Основні виключення

Aspose.PSD FOSS для Python визначає два типи виключень, специфічні для обробки PSD/PSB: PsdLoadException, що піднімається під час розбору документа, і PsdSaveException, що піднімається під час його запису. Обидва успадковуються від вбудованого Exception і приймають повідомлення плюс необов’язковий inner_exception.


Обробка помилок під час завантаження

PsdLoadException піднімається при кількох помилках структурної валідації під час розбору документа:

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

Загальні повідомлення включають "Invalid PSD signature. Expected '8BPS' (0x38425053)." (файл не починається з підпису PSD/PSB), "Unsupported PSD version: {n}. ..." (поле версії не є ні PSD, ні PSB), та "{section} length {n} exceeds the enclosing section boundary." (заявлена довжина секції не відповідає фактичному розміру файлу).


Обробка помилок під час збереження

PsdSaveException має єдине місце підняття у цій збірці FOSS — перевірка довжини 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}")

Його повідомлення — "PSD Pascal string length {n} exceeds the supported maximum 255." — виникає, коли ім’я шару або ресурсу перевищує 255 байт.


Перевірка внутрішнього виключення

Обидва типи виключень приймають аргумент конструктора inner_exception, який заповнюється, коли підлягаюча помилка I/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}")

Шаблон NotSupportedException

Кілька встановлювачів властивостей в інших місцях API піднімають NotSupportedException замість PsdLoadException/PsdSaveException — це сигналізує про властивість, яка навмисно лише для читання у цьому FOSS-збірці, а не про помилку розбору або запису. Дивіться Resources and Layers для конкретних властивостей, що постраждали.


Поради та найкращі практики

  • Ловіть PsdLoadException і PsdSaveException конкретно, а не базовий Exception, коли потрібно розрізняти помилки завантаження від помилок збереження.
  • ArgumentNullException (виникає, коли PsdImage.load викликається з None потоком) і NotSupportedException є окремими типами виключень — не варіантами PsdLoadException/PsdSaveException.

Типові проблеми

ПроблемаПричинаВиправлення
PsdLoadException про непідтримувану версіюПоле version файлу не є ні стандартним значенням PSD, ні PSBПереконайтеся, що файл є справжнім, незіпсованим PSD/PSB документом
PsdSaveException про довжину рядка PascalНазва шару або ресурсу перевищує 255 байтСкоротіть значення перед збереженням

FAQ

Чи PsdLoadException і PsdSaveException мають спільний базовий тип виключення?

Ні — обидва успадковуються безпосередньо від вбудованого Exception, а не один від одного чи від спільного базового класу виключень Aspose.PSD.

Чи перехоплення Exception також перехопить ці два типи?

Так, оскільки обидва успадковуються від Exception — але перехоплення конкретних типів дозволяє розрізнити помилки завантаження від помилок збереження.


Підсумок API Reference

Клас/МетодОпис
PsdLoadException(message, inner_exception=None)Виникає під час розбору документа
PsdSaveException(message, inner_exception=None)Виникає під час запису документа
NotSupportedException(message, inner_exception=None)Піднято read-only-in-this-FOSS-build сеттерами

Дивіться також

 Українська