.NET içinde PSD Core İstisnalarını Nasıl Ele Alırsınız
Aspose.PSD FOSS for .NET iki istisna türü tanımlar: PsdLoadException, bir PSD/PSB belgesi ayrıştırılırken fırlatılır ve PsdSaveException, bir belge yazılırken fırlatılır. İkisi de System.Exception sınıfından türetilir ve yalnızca mesaj alan bir kurucu ve mesaj-artı-iç-istisna kurucusunu destekler.
Adım Adım Kılavuz
Adım 1: Paketi Yükleyin
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildAdım 2: Gerekli Sınıfları İçe Aktarın
using Aspose.PSD.FileFormats.Psd;Adım 3: Yükleme Zamanı Hatalarını Yakala
PsdLoadException, bir belgenin yapısı doğrulamadan geçemediğinde fırlatılır — örneğin, desteklenmeyen bir PSD/PSB sürümü, kapsayan bölümün bildirilen sınırını aşan bir bölüm uzunluğu veya kesilmiş akış verisi:
try
{
using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load PSD/PSB file: {ex.Message}");
}Adım 4: Kaydetme Zamanı Hatalarını Yakala
PsdSaveException, bir belge yazılırken fırlatılır — örneğin, bir dize değeri PSD Pascal dize alanının tutabileceği uzunluğu aştığında:
try
{
image.Save("output.psd");
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save PSD/PSB file: {ex.Message}");
}Adım 5: İç İstisnayı İncele
Her iki istisna tipi de bir iç istisna saran bir yapıcıya sahiptir (örneğin, bir I/O hatası dosya yapısını okurken kesildiğinde dahili olarak kullanılır). Temel nedeni görmek için InnerException‘ı kontrol edin:
try
{
using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex) when (ex.InnerException != null)
{
Console.WriteLine($"Underlying I/O error: {ex.InnerException.Message}");
}Yaygın Sorunlar ve Çözümler
PsdLoadException desteklenmeyen bir sürümle ilgili bir mesaj. Dosyanın bildirilen PSD sürüm alanı ne standart PSD ne de büyük belge PSB değeridir. Dosyanın gerçek, bozulmamış bir PSD/PSB belgesi olduğundan emin olun.
PsdLoadException bir bölüm uzunluğunun bir sınırı aşmasıyla ilgili bir mesaj. Dosyanın iç uzunluk alanları gerçek boyutuyla tutarsız — bu genellikle desteklenmeyen bir varyanttan ziyade dosyanın kesildiğini veya bozulduğunu 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 maksimum değerdir. Kaydetmeden önce değeri kısaltın.
Sıkça Sorulan Sorular
Do PsdLoadException ve PsdSaveException ortak bir temel istisna türü paylaşıyor mu?
Hayır — ikisi de doğrudan System.Exception‘dan türetilir, birbirlerinden ya da ortak bir Aspose.PSD temel istisna sınıfından türetilmez.
Uzun bir dize değeri dışında PsdSaveException başka sebeplerle ortaya çıkabilir mi?
Bu FOSS derlemesinde doğrulanmış atma noktası Pascal-dize-uzunluğu kontrolüdür. Diğer kaydetme zamanı I/O hataları (örneğin, yazılamayan bir hedef akış) PsdSaveException içinde sarılmak yerine temel .NET istisna türü olarak ortaya çıkar.
Exception‘ı yakalamak bu iki türü de yakalayacak mı?
Evet, ikisi de System.Exception’den türediği için — ancak belirli türleri yakalamak, yükleme hatalarını kaydetme hatalarından ayırmanızı sağlar.