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

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

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

تقارير المكتبة عن فشل التحميل والحفظ من خلال نوعين مخصصين من الاستثناءات: 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)يتم إلقاؤه عندما لا يمكن حفظ المستند

انظر أيضاً

 العربية