الاستثناءات الأساسية

الاستثناءات الأساسية

الاستثناءات الأساسية

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 لديه موقع رفع واحد فقط في هذا البناء المفتوح المصدر — فحص طول سلسلة باسكال:

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." — تُرفع عندما يتجاوز اسم الطبقة أو المورد 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 — هذا يشير إلى خاصية مُقصدًا أن تكون للقراءة فقط في هذا البناء المفتوح المصدر، وليس إلى فشل في التحليل أو الكتابة. راجع Resources and Layers للخصائص المحددة المتأثرة.


نصائح وأفضل الممارسات

  • التقط PsdLoadException و PsdSaveException بشكل محدد بدلاً من القاعدة Exception عندما تحتاج إلى تمييز فشل التحميل عن فشل الحفظ.
  • 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)تم رفعه بواسطة مُعَيِّنات القراءة-فقط-في-هذا-البناء-المفتوح

انظر أيضاً

 العربية