חריגות ליבה
חריגות ליבה
Aspose.PSD FOSS for 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." — נזרק כאשר שם שכבה או משאב חורג מ-255 בתים.
בדיקת חריגה פנימית
שני סוגי החריגים מקבלים ארגומנט בנאי inner_exception, שמומלא כאשר כשל קלט/פלט בסיסי גרם לחריגה:
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
מספר setters של נכסים במקומות אחרים ב-API מעלים NotSupportedException במקום PsdLoadException/PsdSaveException — זה מסמן נכס שנקבע בכוונה לקריאה בלבד בבנייה הזו של FOSS, ולא כשלון בניתוח או כתיבה. ראה 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) | נוצר על ידי קובעי קריאה-רק-בגרסת-FOSS-זו |