PSD Core İstisnalarını Python içinde Nasıl Ele Alırsınız
Aspose.PSD FOSS for Python iki istisna türü tanımlar: PsdLoadException, bir PSD/PSB belgesi ayrıştırılırken yükseltilir ve PsdSaveException, bir belge yazılırken yükseltilir. Her ikisi de yerleşik Exception sınıfından türetilir ve bir mesaj ile isteğe bağlı bir iç istisna kabul eder.
Adım Adım Kılavuz
Adım 1: Paketi Kurun
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:$PYTHONPATHAdım 2: Gerekli Sınıfları İçe Aktarın
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
from aspose_psd_foss.coreexceptions.psdsaveexception import PsdSaveExceptionAdım 3: Yükleme Zamanı Hatalarını Yakala
PsdLoadException, bir belgenin yapısı doğrulamayı geçemediğinde ortaya çıkar — örneğin, desteklenmeyen bir PSD/PSB sürümü, bir bölüm uzunluğunun kapsayan bölümün bildirilen sınırını aşması veya kesilmiş akış verisi:
try:
image = PsdImage.load("input.psd")
except PsdLoadException as ex:
print(f"Failed to load PSD/PSB file: {ex}")Adım 4: Kaydetme Zamanı Hatalarını Yakala
PsdSaveException, bir belge yazılırken ortaya çıkar — örneğin, bir dize değeri PSD Pascal dize alanının tutabileceği uzunluğu (255 bayt) aştığında:
try:
image.save("output.psd")
except PsdSaveException as ex:
print(f"Failed to save PSD/PSB file: {ex}")Adım 5: İç İstisna’yı İncele
Her iki istisna türü de bir inner_exception yapıcı argümanını kabul eder (örneğin, bir I/O hatası dosya yapısını okurken kesildiğinde dahili olarak kullanılır). Temel nedeni için inner_exception‘e bakın:
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}")Yaygın Sorunlar ve Çözümler
PsdLoadException desteklenmeyen bir sürümle ilgili bir mesajla. Dosyanın bildirilen PSD sürüm alanı, standart PSD ya da büyük belge PSB değerlerinden hiçbiri değil. Dosyanın gerçek, bozulmamış bir PSD/PSB belgesi olduğunu doğrulayın.
PsdLoadException bir bölüm uzunluğunun sınırı aştığına dair bir mesajla. Dosyanın iç uzunluk alanları gerçek boyutuyla tutarsız — bu genellikle desteklenmeyen bir varyanttan ziyade kesilmiş veya bozuk bir dosyayı gösterir.
PsdSaveException Pascal dizesi uzunluğu hakkında. Bir dize değeri (örneğin bir katman veya kaynak adı) 255 baytı aşıyor; bu, bir PSD Pascal dizesi alanının kodlayabileceği azami değerdir. Kaydetmeden önce değeri kısaltın.
Sıkça Sorulan Sorular
Do PsdLoadException ve PsdSaveException ortak bir temel istisna türünü paylaşıyor mu?
Hayır — ikisi de yerleşik Exception‘dan doğrudan türetilir, birbirlerinden ya da ortak bir Aspose.PSD temel istisna sınıfından türetilmez.
Bir uzun dize değerinden başka sebeplerle PsdSaveException oluşabilir mi?
Bu FOSS derlemesinde onaylanmış yükseltme yeri Pascal-dize-uzunluğu kontrolüdür. Diğer kaydetme zamanındaki I/O hataları (örneğin, yazılamayan bir hedef akış) temel Python istisna türü olarak ortaya çıkar ve PsdSaveException içinde sarılmaz.
Exception yakalanırsa bu iki tür de yakalanır mı?
Evet, çünkü ikisi de Exception üzerinden türetilir — ancak belirli türleri yakalamak, yükleme hatalarını kaydetme hatalarından ayırmanıza olanak tanır.