איך להתמודד עם חריגות ליבת PSD ב-Python

איך להתמודד עם חריגות ליבת PSD ב-Python

Aspose.PSD FOSS עבור Python מגדיר שני סוגי חריגות: PsdLoadException, שנזרקת בזמן ניתוח מסמך PSD/PSB, ו-PsdSaveException, שנזרקת בזמן כתיבה של אחד. שתיהן יורשות מה-Exception המובנה ומקבלות הודעה בתוספת חריגה פנימית אופציונלית.

מדריך שלב-אחר-שלב

שלב 1: התקנת החבילה

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATH

שלב 2: ייבוא המחלקות הדרושות

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
from aspose_psd_foss.coreexceptions.psdsaveexception import PsdSaveException

שלב 3: לתפוס כשלונות בזמן טעינה

PsdLoadException נזרק כאשר מבנה המסמך נכשל באימות — למשל, גרסה של PSD/PSB שאינה נתמכת, אורך סעיף העולה על הגבול שהוגדר עבור הסעיף המכלול, או נתוני זרם מקוצרים:

try:
    image = PsdImage.load("input.psd")
except PsdLoadException as ex:
    print(f"Failed to load PSD/PSB file: {ex}")

שלב 4: לתפוס כשלים בזמן שמירה

PsdSaveException נזרק בזמן כתיבת מסמך — למשל, כאשר ערך מחרוזת חורג מהאורך שמסוגל להכיל שדה מחרוזת פסקל של PSD (255 בתים):

try:
    image.save("output.psd")
except PsdSaveException as ex:
    print(f"Failed to save PSD/PSB file: {ex}")

שלב 5: לבחון חריגה פנימית

שני סוגי החריגות מקבלים ארגומנט בנאי inner_exception (משמש פנימית, למשל, כאשר שגיאת קלט/פלט מפריעה לקריאת מבנה הקובץ). בדוק את inner_exception כדי למצוא את הסיבה הבסיסית:

try:
    image = PsdImage.load("input.psd")
except PsdLoadException as ex:
    if ex.inner_exception is not None:
        print(f"Underlying I/O error: {ex.inner_exception}")

בעיות נפוצות ותיקונים

PsdLoadException עם הודעה על גרסה לא נתמכת. השדה המוצהר של גרסת ה-PSD בקובץ אינו ערך ה-PSD הסטנדרטי ולא ערך ה-PSB למסמכים גדולים. ודא שהקובץ הוא מסמך PSD/PSB אמיתי ולא פגום.

PsdLoadException עם הודעה על אורך חלק העולה על גבול. שדות האורך הפנימיים של הקובץ אינם תואמים את גודלו בפועל — זה בדרך כלל מצביע על קובץ חתוך או פגום ולא על גרסה שלא נתמכת.

PsdSaveException על אורך מחרוזת פסקל. ערך מחרוזת (כגון שם שכבה או משאב) חורג מ-255 בתים, המקסימום שהשדה פסקל של PSD יכול לקודד. קצץ את הערך לפני השמירה.

שאלות נפוצות

האם PsdLoadException ו-PsdSaveException חולקים סוג בסיס משותף של חריגה?

לא — שניהם נגזרים ישירות מה-Exception המובנה, ולא זה מזה או ממחלקת בסיס משותפת Aspose.PSD של חריגות.

האם PsdSaveException יכול להתרחש מסיבות אחרות מלבד ערך מחרוזת ארוך?

מקום ההעלאה המאושר בבנייה זו של FOSS הוא בדיקת אורך מחרוזת-פסקל. כשלים אחרים בזמן שמירה (למשל, זרם יעד שלא ניתן לכתוב אליו) מתגולמים כחריגה מסוג Python הבסיסי ולא עטופים ב-PsdSaveException.

האם תפסException יכלול גם את שני הסוגים האלה?

כן, מכיוון ששניהם נגזרים מ-Exception — אך זיהוי הסוגים הספציפיים מאפשר לך להבדיל בין כשלי טעינה לכשלי שמירה.

ראה גם

 עברית