استثناهای اصلی

استثناهای اصلی

استثناهای اصلی

کتابخانه خطاهای بارگذاری و ذخیره‌سازی را از طریق دو نوع استثنای اختصاصی گزارش می‌دهد: 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);

نکات و بهترین شیوه‌ها

  • در اطراف هر فراخوانی Image.Load()/PsdImage.Load() که ورودی خارجی را پردازش می‌کند، PsdLoadException را بگیرید.
  • اگر مقصد (دیسک، جریان) ممکن است قابل نوشتن نباشد، در اطراف هر فراخوانی PsdImage.Save()، PsdSaveException را بگیرید.
  • هر دو نوع از Exception ارث می‌برند، بنابراین یک catch (Exception) عمومی‌تر نیز آنها را می‌گیرد — وقتی می‌خواهید شکست‌های بارگذاری را از شکست‌های ذخیره‌سازی متمایز کنید، نوع‌های خاص را ترجیح دهید.

مسائل رایج

مشکلدلیلراه‌حل
PsdLoadException روی فایلی که در ابزارهای دیگر به‌درستی باز می‌شودورودی یک سند PSD/PSB معتبر نیست، یا از ویژگی‌ای استفاده می‌کند که تجزیه‌کننده این نسخهٔ متن‌باز آن را تشخیص نمی‌دهدتأیید کنید که فایل یک سند واقعی PSD/PSB است؛ ویژگی‌های پشتیبانی‌نشده را جدا از خطاهای بارگذاری گزارش دهید
PsdSaveException هنگام نوشتن به یک جریانممکن است جریان مقصد قابل نوشتن نباشد یا قبلاً از بین رفته باشدپیش از فراخوانی Save()، تأیید کنید که جریان باز و قابل نوشتن است

FAQ

آیا این کتابخانه پس از شکست بارگذاری یا ذخیره‌سازی به‌صورت خودکار دوباره تلاش می‌کند؟

خیر. PsdLoadException و PsdSaveException یک‌بار پرتاب می‌شوند و باید توسط فراخواننده مدیریت شوند؛ هیچ تلاش خودکار دیگری وجود ندارد.

آیا می‌توانم علت اصلی یک استثنای بسته‌بندی‌شده را بررسی کنم؟

بله، وقتی یکی ارائه شود — هر دو سازنده یک پارامتر innerException را می‌پذیرند که از طریق ویژگی استاندارد Exception.InnerException قابل دسترسی است.


API Reference خلاصه

کلاس/متدتوضیح
PsdLoadException(message) / PsdLoadException(message, innerException)زمانی که سندی قابل بارگذاری نباشد، این استثنا پرتاب می‌شود
PsdSaveException(message) / PsdSaveException(message, innerException)در صورتی که سند نتواند ذخیره شود، پرتاب می‌شود

همچنین ببینید:

 فارسی