Temel İstisnalar
Temel İstisnalar
Kütüphane, yükleme ve kaydetme hatalarını iki özel istisna türü aracılığıyla rapor eder: PsdLoadException ve PsdSaveException, her ikisi de standart Exception sınıfını genişletir.
PsdLoadException
Image.Load() / PsdImage.Load() girdiyi geçerli bir PSD veya PSB belgesi olarak ayrıştıramadığında fırlatılır.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
PsdImage.Save() belgeyi dışa yazamadığında fırlatılır.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Yapıcılar
Her iki istisna türü de aynı iki yapıcı şekline sahiptir: yalnızca mesaj alan bir yapıcı ve daha düşük seviyeli bir hatayı sarmak için mesaj-ve-iç-istisna yapıcısı.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);İpuçları ve En İyi Uygulamalar
- Harici girdi işleyen her
Image.Load()/PsdImage.Load()çağrısının etrafındaPsdLoadExceptionyakalayın. - Hedef (disk, akış) yazılabilir olmayabilir ise her
PsdImage.Save()çağrısının etrafındaPsdSaveExceptionyakalayın. - Her iki tip de
Exception‘ı genişletir, bu yüzden daha geniş bircatch (Exception)de onları yakalar — yükleme hatalarını kaydetme hatalarından ayırmak istediğinizde belirli tipleri tercih edin.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
PsdLoadException diğer araçlarda sorunsuz açılan bir dosyada | Girdi geçerli bir PSD/PSB belgesi değil ya da bu FOSS build’in ayrıştırıcısının tanımadığı bir özellik içeriyor | Dosyanın gerçek bir PSD/PSB belgesi olduğunu doğrulayın; desteklenmeyen özellikleri yükleme hatalarından ayrı raporlayın |
PsdSaveException akışa yazarken | Hedef akış yazılabilir olmayabilir ya da zaten serbest bırakılmış olabilir | Akışın açık ve yazılabilir olduğunu, Save() çağırmadan önce doğrulayın |
FAQ
Bu kütüphane bir yükleme ya da kaydetme hatasından sonra otomatik olarak yeniden deneme yapar mı?
Hayır. PsdLoadException ve PsdSaveException bir kez yükseltilir ve çağıran tarafından ele alınmalıdır; otomatik bir yeniden deneme yoktur.
Sarılan bir istisnanın orijinal nedenini inceleyebilir miyim?
Evet, sağlandığında — her iki yapıcı da bir innerException parametresi kabul eder ve standart Exception.InnerException özelliği aracılığıyla erişilebilir.
API Reference Özet
| Sınıf/Yöntem | Açıklama |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Bir belge yüklenemediğinde atılır |
PsdSaveException(message) / PsdSaveException(message, innerException) | Bir belge kaydedilemediğinde atılır |