Python में PSD कोर अपवादों को कैसे संभालें

Python में PSD कोर अपवादों को कैसे संभालें

Aspose.PSD FOSS for 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 कंस्ट्रक्टर आर्ग्युमेंट स्वीकार करते हैं (आंतरिक रूप से उपयोग किया जाता है, उदाहरण स्वरूप, जब I/O त्रुटि फ़ाइल संरचना के पढ़ने में बाधा बनती है)। मूल कारण के लिए 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 Pascal स्ट्रिंग लंबाई के बारे में। एक स्ट्रिंग मान (जैसे लेयर या रिसोर्स नाम) 255 बाइट्स से अधिक है, जो PSD Pascal स्ट्रिंग फ़ील्ड अधिकतम एन्कोड कर सकता है। सहेजने से पहले मान को छोटा करें।

अक्सर पूछे जाने वाले प्रश्न

क्या PsdLoadException और PsdSaveException का कोई सामान्य बेस एक्सेप्शन टाइप साझा है?

नहीं — दोनों सीधे बिल्ट-इन Exception से विरासत में मिलते हैं, न कि एक-दूसरे से या किसी साझा Aspose.PSD बेस एक्सेप्शन क्लास से।

क्या PsdSaveException केवल लंबे स्ट्रिंग मान के अलावा अन्य कारणों से हो सकता है?

इस FOSS बिल्ड में पुष्टि किया गया उठाने का स्थान Pascal-स्ट्रिंग-लंबाई जाँच है। अन्य सहेजने-समय I/O विफलताएँ (जैसे, एक डेस्टिनेशन स्ट्रीम जिसमें लिखा नहीं जा सकता) अंतर्निहित Python एक्सेप्शन टाइप के रूप में प्रदर्शित होती हैं, न कि PsdSaveException में लिपटे हुए।

क्या Exception को पकड़ने से ये दोनों प्रकार भी पकड़े जाएंगे?

हाँ, क्योंकि दोनों Exception से व्युत्पन्न होते हैं — लेकिन विशिष्ट प्रकारों को पकड़ने से आप लोड विफलताओं को सहेजने की विफलताओं से अलग पहचान सकते हैं।

यह भी देखें

 हिन्दी