Основні виключення
Основні виключення
Бібліотека повідомляє про помилки завантаження та збереження за допомогою двох спеціальних типів виключень: 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) | Викидається, коли документ неможливо зберегти |