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

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

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

Бібліотека повідомляє про помилки завантаження та збереження за допомогою двох спеціальних типів виключень: PsdLoadException і PsdSaveException, які обидва успадковують стандартний клас Exception.


PsdLoadException

Викидається, коли Image.Load() / PsdImage.Load() не можуть розпарсити вхідні дані як дійсний документ PSD або PSB.

try
{
    using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}

PsdSaveException

Викидається, коли PsdImage.Save() не може записати документ.

try
{
    image.Save(outputPath);
}
catch (PsdSaveException ex)
{
    Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}

Конструктори

Обидва типи виключень мають одну й ту ж форму з двома конструкторами: конструктор лише з повідомленням та конструктор з повідомленням і внутрішнім виключенням для обгорнення помилки нижчого рівня.

throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);

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

  • Ловіть PsdLoadException навколо кожного виклику Image.Load()/PsdImage.Load(), який обробляє зовнішні дані.
  • Ловіть PsdSaveException навколо кожного виклику PsdImage.Save(), якщо призначення (диск, потік) може бути недоступним для запису.
  • Обидва типи успадковують Exception, тому більш загальний catch (Exception) також їх ловить — використовуйте конкретні типи, коли потрібно розрізнити помилки завантаження від помилок збереження.

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

ПроблемаПричинаВиправлення
PsdLoadException у файлі, який відкривається без проблем в інших інструментахВхідний файл не є дійсним документом PSD/PSB, або використовує функцію, яку парсер цього FOSS збірки не розпізнаєПереконайтеся, що файл є справжнім документом PSD/PSB; повідомляйте про непідтримувані функції окремо від помилок завантаження
PsdSaveException при записі у потікЦільовий потік може не бути придатним для запису або вже був звільненийПереконайтеся, що потік відкритий і доступний для запису, перед викликом Save()

FAQ

Чи ця бібліотека автоматично повторює спробу після помилки завантаження або збереження?

Ні. PsdLoadException та PsdSaveException піднімаються один раз і мають бути оброблені викликачем; автоматичне повторення не передбачено.

Чи можу я переглянути первинну причину обгорнутого виключення?

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


API Reference Підсумок

Клас/МетодОпис
PsdLoadException(message) / PsdLoadException(message, innerException)Викидається, коли документ неможливо завантажити
PsdSaveException(message) / PsdSaveException(message, innerException)Викидається, коли документ неможливо зберегти

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

 Українська