חריגות ליבה
חריגות ליבה
הספרייה מדווחת על כשלי טעינה ושמירה דרך שני סוגי חריגה ייעודיים: 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) | נזרק כאשר לא ניתן לשמור מסמך |