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