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

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

Aspose.PSD FOSS for .NET दो अपवाद प्रकार निर्धारित करता है: PsdLoadException, जो PSD/PSB दस्तावेज़ को पार्स करते समय फेंका जाता है, और PsdSaveException, जो इसे लिखते समय फेंका जाता है। दोनों System.Exception से व्युत्पन्न हैं और केवल-संदेश कंस्ट्रक्टर तथा संदेश-और-आंतरिक-अपवाद कंस्ट्रक्टर को समर्थन करते हैं।

स्टेप-बाय-स्टेप गाइड

चरण 1: पैकेज स्थापित करें

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build

चरण 2: आवश्यक क्लासेस आयात करें

using Aspose.PSD.FileFormats.Psd;

चरण 3: लोड-टाइम विफलताओं को पकड़ें

PsdLoadException तब फेंका जाता है जब दस्तावेज़ की संरचना मान्यकरण में विफल हो जाती है — उदाहरणस्वरूप, एक असमर्थित PSD/PSB संस्करण, एक अनुभाग की लंबाई जो समाहित अनुभाग की घोषित सीमा से अधिक हो, या ट्रंकेटेड स्ट्रीम डेटा:

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load PSD/PSB file: {ex.Message}");
}

चरण 4: सहेजने के समय की त्रुटियों को पकड़ें

PsdSaveException दस्तावेज़ लिखते समय उठाया जाता है — उदाहरणस्वरूप, जब कोई स्ट्रिंग मान PSD Pascal स्ट्रिंग फ़ील्ड की अधिकतम लंबाई से अधिक हो जाए:

try
{
    image.Save("output.psd");
}
catch (PsdSaveException ex)
{
    Console.WriteLine($"Failed to save PSD/PSB file: {ex.Message}");
}

चरण 5: आंतरिक अपवाद की जांच करें

दोनों अपवाद प्रकारों में एक कंस्ट्रक्टर होता है जो एक आंतरिक अपवाद को लपेटता है (आंतरिक रूप से उपयोग किया जाता है, उदाहरणस्वरूप, जब I/O त्रुटि फ़ाइल संरचना को पढ़ने में बाधा डालती है)। मूल कारण के लिए InnerException देखें:

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex) when (ex.InnerException != null)
{
    Console.WriteLine($"Underlying I/O error: {ex.InnerException.Message}");
}

सामान्य समस्याएँ और समाधान

PsdLoadException एक असमर्थित संस्करण के बारे में संदेश के साथ। फ़ाइल के घोषित PSD संस्करण फ़ील्ड न तो मानक PSD है और न ही बड़े-दस्तावेज़ PSB मान। पुष्टि करें कि फ़ाइल एक वास्तविक, असंगत नहीं PSD/PSB दस्तावेज़ है।

PsdLoadException एक सीमा से अधिक सेक्शन लंबाई के बारे में संदेश के साथ। फ़ाइल के आंतरिक लंबाई फ़ील्ड उसके वास्तविक आकार से असंगत हैं — यह आमतौर पर असमर्थित संस्करण के बजाय कटे हुए या भ्रष्ट फ़ाइल का संकेत देता है।

PsdSaveException Pascal स्ट्रिंग लंबाई के बारे में। एक स्ट्रिंग मान (जैसे लेयर या रिसोर्स नाम) 255 बाइट से अधिक है, जो PSD Pascal स्ट्रिंग फ़ील्ड द्वारा एन्कोड किया जा सकता अधिकतम है। सहेजने से पहले मान को छोटा करें।

आम तौर पर पूछे जाने वाले प्रश्न

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

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

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

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

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

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

यह भी देखें

 हिन्दी