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

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

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

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 تنها یک مکان برای پرتاب دارد — بررسی طول رشته پاسکال:

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." — زمانی که نام لایه یا منبع بیش از ۲۵۵ بایت باشد، پرتاب می‌شود.


بررسی استثنای داخلی

هر دو نوع استثناء، آرگومان سازنده 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 برای ویژگی‌های خاصی که تحت تأثیر قرار گرفته‌اند.


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

  • به‌جای دریافت پایه Exception، به‌طور خاص PsdLoadException و PsdSaveException را بگیرید تا بتوانید شکست‌های بارگذاری را از شکست‌های ذخیره‌سازی متمایز کنید.
  • ArgumentNullException (زمانی که PsdImage.load با یک جریان None فراخوانی می‌شود، پرتاب می‌شود) و NotSupportedException انواع استثناء جداگانه‌ای هستند — نه گونه‌های PsdLoadException/PsdSaveException.

مسائل رایج

مسئلهدلیلرفع
PsdLoadException دربارهٔ نسخهٔ پشتیبانی‌نشدهفیلد نسخهٔ فایل نه مقدار استاندارد PSD است و نه مقدار PSBتأیید کنید که فایل یک سند PSD/PSB واقعی و بدون خرابی است
PsdSaveException دربارهٔ طول رشته پاسکالنام یک لایه یا منبع بیش از 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)توسط تنظیم‌کننده‌های فقط-خواندنی-در-این-ساخت-FOSS ایجاد می‌شود

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

 فارسی