İstisna İşleme
İstisna İşleme
Bu kılavuz, Aspose.PDF FOSS for .NET’nin hataları PdfException kökenli tiplenmiş bir istisna hiyerarşisi aracılığıyla nasıl işaretlediğini, bu istisnanın System.Exception‘den türediğini ve her hata kategorisinin nasıl yakalanacağını gösterir. Kütüphanedeki her PDF’ye özgü istisna — hatalı bir şifre, okunamayan bir dosya, eksik bir yazı tipi veya geçersiz bir form işlemi — PdfException‘den türetilir, bu yüzden yalnızca PdfException‘i yakalamak, kütüphane tarafından yükseltilen herhangi bir hatayı yakalamak için yeterlidir; daha spesifik catch blokları ise her hata moduna farklı şekilde yanıt vermenizi sağlar.
Şifre ve Güvenlik Hataları
InvalidPasswordException, geçerli bir şifre sağlanmadan şifre korumalı bir işlem denendiğinde, örneğin şifreli bir belgeyi yanlış şifreyle açarken fırlatılır.
try
{
var doc = new Document("encrypted.pdf", "wrong-password");
}
catch (InvalidPasswordException ex)
{
Console.WriteLine($"Password rejected: {ex.Message}");
}Dosya Biçimi Hataları
InvalidPdfFileFormatException, bir akış PDF olarak açılamadığında — hatalı bir başlık, kesik bir dosya veya tamamen PDF olarak tanınamayan içerik — fırlatılır.
try
{
var doc = new Document("not-a-pdf.txt");
}
catch (InvalidPdfFileFormatException ex)
{
Console.WriteLine($"Not a valid PDF: {ex.Message}");
}Yazı Tipi Hataları
Yazı tipiyle ilgili hatalar, neyin yanlış gittiğine bağlı olarak üç ayrı istisna türüne ayrılır:
FontNotFoundException— istenen yazı tipi adıyla eşleşen bir sistem yazı tipi veya özel yazı tipi kaynağı yok.UnsupportedFontTypeException— yazı tipi olarak sağlanan dosya tanınan bir yazı tipi programı değil.IncorrectFontUsageException— bir içerik akışında metin gösteren bir operatör ortaya çıkar, ancak geçerli grafik durumunda yazı tipi ayarlanmamış.
try
{
var font = FontRepository.FindFont("NonexistentFont");
}
catch (FontNotFoundException ex)
{
Console.WriteLine($"Font not found: {ex.Message}");
}
try
{
var font = FontRepository.OpenFont("not-a-font-file.dat");
}
catch (UnsupportedFontTypeException ex)
{
Console.WriteLine($"Unsupported font file: {ex.Message}");
}
try
{
var extractor = new PdfExtractor(doc);
extractor.ExtractText();
}
catch (IncorrectFontUsageException ex)
{
Console.WriteLine($"Content stream font error: {ex.Message}");
}Metin Çıkarma Hataları
PdfTextDecodingException, metin içeriği çözülemediğinde atılır; örneğin, bir yazı tipi tarafından başvurulan kodlama eksik veya bozuk olduğunda.
try
{
var extractor = new PdfExtractor(doc);
extractor.GetText("output.txt");
}
catch (PdfTextDecodingException ex)
{
Console.WriteLine($"Text decoding failed: {ex.Message}");
}Form Türü Hataları
InvalidFormTypeOperationException, yanlış form türünde bir işlem yapılmaya çalışıldığında atılır — örneğin, XFA tabanlı olmayan bir formda XFA-özel bir metodun çağrılması.
try
{
var form = new Form(doc);
form.AssignXfa(xmlData);
}
catch (InvalidFormTypeOperationException ex)
{
Console.WriteLine($"Wrong form type: {ex.Message}");
}İpuçları ve En İyi Uygulamalar
- Öncelikle en spesifik istisna tipini yakalayın (örneğin,
InvalidPasswordException) ve kütüphanenin başka bir şey fırlattığı durumlar için yalnızca bir yedek olarak son bircatch (PdfException)bloğu ekleyin. - XFA’ya özgü yöntemleri çağırmadan önce
Form.IsXfaveyaForm.Typekontrol edin,InvalidFormTypeOperationExceptionoluşmasını önlemek için. - Render işlemi öncesinde
FontRepository.FindFontile fontları sorgulayın, böylece eksik fontlar açıkça ele alınabilir, yalnızca istisna yakalamaya güvenmek yerine. - Beklenmeyen bir
PdfExceptionüst seviye işleyicinize ulaştığında, yakalanan istisna ile birCrashReportOptionsoluşturun ve destek talepleri için tanı raporu yakalamak amacıylaex.GenerateCrashReport(options)çağırın. - Dosyayı önce açıp tekrar denemek yerine, belge şifresini her zaman
Documentyapıcı aşırı yüklemesi aracılığıyla geçirin.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
Belge açıldığında InvalidPasswordException | Yanlış veya eksik şifre sağlandı | Doğru şifreyi Document(filename, password) oluşturucusuna iletin |
Belge açıldığında InvalidPdfFileFormatException | Dosya PDF değil, bozuk ya da kesik | Dosya başlığını doğrulayın ve kaynak dosyayı yeniden edinin |
FontNotFoundException renderleme sırasında | Talep edilen yazı tipi yüklü değil ve hiçbir ikame kaydedilmemiş | Bir yazı tipi kaynağı kaydedin veya FontRepository.Substitutions kontrol edin |
UnsupportedFontTypeException FontRepository.OpenFont den | Sağlanan dosya tanınan bir yazı tipi programı değil | Dosyanın geçerli bir yazı tipi olduğunu açmadan önce doğrulayın |
InvalidFormTypeOperationException form işlemlerinde | XFA-özel yöntem XFA olmayan bir formda çağrıldı veya tersine | Tür-özel yöntemleri çağırmadan önce Form.IsXfa veya Form.Type kontrol edin |
FAQ
PdfException öğesini mi yoksa belirli alt sınıfı mı yakalamalıyım?
Belirli bir alt sınıfı, örneğin InvalidPasswordException, yakalayın; bu, o hataya farklı şekilde yanıt vermeniz gerektiğinde kullanılır. Diğer kütüphane kaynaklı hatalar için bir yedek olarak son bir catch (PdfException) bloğu ekleyin.
Tüm PDF’ye özgü istisnalar PdfException‘dan türetilir mi?
Evet. PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException ve InvalidFormTypeOperationException hepsi PdfException‘den türetilir; PdfException ise System.Exception‘den türetilir.
PdfExceptionMessages ne işe yarar?
PdfExceptionMessages, kütüphanenin istisnaları ve güvenlik teşhisleri tarafından ortaya çıkan mesaj dizelerini merkezileştiren statik bir sınıftır; buna DangerousFile mesajı da dahildir.
Bir istisna meydana geldiğinde tanı raporu oluşturabilir miyim?
Evet. Yakalanan istisna ile bir CrashReportOptions örneği oluşturun, isteğe bağlı olarak ApplicationTitle ve CrashReportDirectory gibi özellikleri ayarlayın ve ayrıntılı bir çökme raporu yazmak için PdfException üzerindeki GenerateCrashReport(options)‘ı çağırın.
API Reference Özeti
| Sınıf | Açıklama |
|---|---|
PdfException | PDF uygulaması çalıştırılırken oluşan hatalar için temel istisna |
PdfTextDecodingException | Metin içeriği çözülemediğinde fırlatılır |
IncorrectFontUsageException | Grafik durumunda yazı tipi ayarlanmamışken bir metin gösterme operatörü ortaya çıktığında fırlatılır |
InvalidPasswordException | Parola korumalı bir işlem geçerli bir parola olmadan denendiğinde fırlatılır |
InvalidPdfFileFormatException | Bir akış PDF olarak açılamadığında fırlatılır |
FontNotFoundException | İstenen yazı tipi bulunamadığında fırlatılır |
UnsupportedFontTypeException | Dosya, biçimi desteklenmediği için bir yazı tipi olarak açılamadığında fırlatılır |
InvalidFormTypeOperationException | Yanlış form türü üzerinde bir işlem denendiğinde fırlatılır |
PdfExceptionMessages | Kütüphanenin istisnaları ve güvenlik tanılamaları tarafından ortaya çıkan merkezi mesaj dizeleri |