कोर अपवाद
कोर अपवाद
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 बिल्ड में एक ही उठाने वाले स्थान पर मौजूद है — एक Pascal-स्ट्रिंग लंबाई जाँच:
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 कन्स्ट्रक्टर तर्क को स्वीकार करते हैं, जो तब भरा जाता है जब कोई आधारभूत I/O विफलता ने अपवाद उत्पन्न किया:
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 पैटर्न
API में अन्य स्थानों पर कई प्रॉपर्टी सेटर्स उठाते हैं NotSupportedException के बजाय PsdLoadException/PsdSaveException — यह संकेत देता है कि यह प्रॉपर्टी इस FOSS बिल्ड में जानबूझकर केवल-पढ़ने योग्य है, न कि पार्सिंग या लिखने में विफलता। देखें Resources and Layers प्रभावित विशिष्ट प्रॉपर्टीज़ के लिए।
टिप्स और सर्वोत्तम प्रथाएँ
- लोड विफलताओं को सेव विफलताओं से अलग पहचानने की आवश्यकता होने पर बेस
Exceptionके बजाय विशेष रूप सेPsdLoadExceptionऔरPsdSaveExceptionको पकड़ें। ArgumentNullException(PsdImage.loadकोNoneस्ट्रीम के साथ बुलाए जाने पर उठाया जाता है) औरNotSupportedExceptionअलग-अलग अपवाद प्रकार हैं —PsdLoadException/PsdSaveExceptionके वैरिएंट नहीं।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
PsdLoadException एक असमर्थित संस्करण के बारे में | फ़ाइल का संस्करण फ़ील्ड न तो मानक PSD है और न ही PSB मान | पुष्टि करें कि फ़ाइल एक वास्तविक, अविकृत PSD/PSB दस्तावेज़ है |
PsdSaveException के बारे में Pascal स्ट्रिंग की लंबाई | एक लेयर या रिसोर्स नाम 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 बिल्ड में केवल-पढ़ने योग्य सेटर्स द्वारा उत्पन्न |