Temel İstisnalar
Temel İstisnalar
Aspose.PSD FOSS for Python, PSD/PSB işleme özgü iki istisna türü tanımlar: PsdLoadException, bir belge ayrıştırılırken yükseltilir ve PsdSaveException, bir belge yazılırken yükseltilir. İkisi de yerleşik Exception türevleridir ve bir mesaj ile isteğe bağlı inner_exception kabul eder.
Yükleme Zamanı Hatalarını Yakalama
PsdLoadException, bir belge ayrıştırılırken bir dizi yapısal doğrulama hatası için yükseltilir:
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}")Yaygın mesajlar şunları içerir: "Invalid PSD signature. Expected '8BPS' (0x38425053)." (PSD/PSB imzası ile başlamayan dosya), "Unsupported PSD version: {n}. ..." (sürüm alanı ne PSD ne de PSB), ve "{section} length {n} exceeds the enclosing section boundary." (bir bölümün bildirilen uzunluğu dosyanın gerçek boyutuyla tutarsız).
Kaydetme Zamanı Hatalarını Yakalama
PsdSaveException, bu FOSS derlemesinde tek bir yükseltme noktasına sahiptir — bir Pascal-dizgesi uzunluk kontrolü:
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}")Mesajı "PSD Pascal string length {n} exceeds the supported maximum 255." — bir katman veya kaynak adı 255 baytı aştığında ortaya çıkar.
İç İstisna İnceleniyor
Her iki istisna türü de inner_exception yapıcı argümanını kabul eder; bu, temel bir I/O hatası istisnayı tetiklediğinde doldurulur:
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 Deseni
Diğer yerlerde API içinde birkaç özellik ayarlayıcısı fırlatır NotSupportedException yerine PsdLoadException/PsdSaveException — bu, bu FOSS derlemesinde kasıtlı olarak yalnızca okunabilir bir özelliği işaret eder, bir ayrıştırma ya da yazma hatası değildir. Bakınız Resources and Layers etkilenen belirli özellikler için.
İpuçları ve En İyi Uygulamalar
- Yükleme hatalarını kaydetme hatalarından ayırmanız gerektiğinde, temel
Exceptionyerine özelliklePsdLoadExceptionvePsdSaveException‘i yakalayın. ArgumentNullException(PsdImage.loadbirNoneakışı ile çağrıldığında ortaya çıkar) veNotSupportedExceptionayrı istisna türleridir —PsdLoadException/PsdSaveException‘nin varyantları değildir.
Sık Karşılaşılan Sorunlar
| Sorun | Sebep | Düzeltme |
|---|---|---|
PsdLoadException desteklenmeyen bir sürüm hakkında | Dosyanın sürüm alanı ne standart PSD ne de PSB değeri. | Dosyanın gerçek, bozulmamış bir PSD/PSB belge olduğunu doğrulayın. |
PsdSaveException bir Pascal dizesi uzunluğu hakkında. | Bir katman veya kaynak adı 255 baytı aşıyor. | Kaydetmeden önce değeri kısaltın. |
FAQ
PsdLoadException ve PsdSaveException ortak bir temel istisna türünü paylaşıyor mu?
Hayır — her ikisi de yerleşik Exception‘dan doğrudan türetilir, birbirlerinden veya ortak bir Aspose.PSD temel istisna sınıfından türemez.
Exception yakalanırsa bu iki tür de yakalanır mı?
Evet, çünkü her ikisi de Exception‘dan türetilir — ancak belirli türleri yakalamak, yükleme hatalarını kaydetme hatalarından ayırt etmenizi sağlar.
API Reference Özeti
| Sınıf/Yöntem | Açıklama |
|---|---|
PsdLoadException(message, inner_exception=None) | Belge ayrıştırması sırasında tetiklendi. |
PsdSaveException(message, inner_exception=None) | Belge yazımı sırasında ortaya çıkar |
NotSupportedException(message, inner_exception=None) | Bu FOSS yapısında yalnızca okunabilir ayarlayıcılar tarafından yükseltilir |