İ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 bir catch (PdfException) bloğu ekleyin.
  • XFA’ya özgü yöntemleri çağırmadan önce Form.IsXfa veya Form.Type kontrol edin, InvalidFormTypeOperationException oluşmasını önlemek için.
  • Render işlemi öncesinde FontRepository.FindFont ile 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 bir CrashReportOptions oluşturun ve destek talepleri için tanı raporu yakalamak amacıyla ex.GenerateCrashReport(options) çağırın.
  • Dosyayı önce açıp tekrar denemek yerine, belge şifresini her zaman Document yapıcı aşırı yüklemesi aracılığıyla geçirin.

Yaygın Sorunlar

SorunNedenDüzeltme
Belge açıldığında InvalidPasswordExceptionYanlış veya eksik şifre sağlandıDoğru şifreyi Document(filename, password) oluşturucusuna iletin
Belge açıldığında InvalidPdfFileFormatExceptionDosya PDF değil, bozuk ya da kesikDosya başlığını doğrulayın ve kaynak dosyayı yeniden edinin
FontNotFoundException renderleme sırasındaTalep 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 denSağlanan dosya tanınan bir yazı tipi programı değilDosyanın geçerli bir yazı tipi olduğunu açmadan önce doğrulayın
InvalidFormTypeOperationException form işlemlerindeXFA-özel yöntem XFA olmayan bir formda çağrıldı veya tersineTü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ıfAçıklama
PdfExceptionPDF uygulaması çalıştırılırken oluşan hatalar için temel istisna
PdfTextDecodingExceptionMetin içeriği çözülemediğinde fırlatılır
IncorrectFontUsageExceptionGrafik durumunda yazı tipi ayarlanmamışken bir metin gösterme operatörü ortaya çıktığında fırlatılır
InvalidPasswordExceptionParola korumalı bir işlem geçerli bir parola olmadan denendiğinde fırlatılır
InvalidPdfFileFormatExceptionBir akış PDF olarak açılamadığında fırlatılır
FontNotFoundExceptionİstenen yazı tipi bulunamadığında fırlatılır
UnsupportedFontTypeExceptionDosya, biçimi desteklenmediği için bir yazı tipi olarak açılamadığında fırlatılır
InvalidFormTypeOperationExceptionYanlış form türü üzerinde bir işlem denendiğinde fırlatılır
PdfExceptionMessagesKütüphanenin istisnaları ve güvenlik tanılamaları tarafından ortaya çıkan merkezi mesaj dizeleri

Ayrıca Bakınız

 Türkçe