استثناهای اصلی
استثنائات اصلی
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 ایجاد میشود |