Penanganan Pengecualian

Penanganan Pengecualian

Penanganan Pengecualian

Panduan ini menunjukkan bagaimana Aspose.PDF FOSS untuk .NET menandai kegagalan melalui hierarki pengecualian bertipe yang berakar pada PdfException, yang sendiri diturunkan dari System.Exception, dan cara menangkap setiap kategori kesalahan. Setiap pengecualian khusus PDF dalam pustaka — kata sandi yang salah, file yang tidak dapat dibaca, font yang hilang, atau operasi formulir yang tidak valid — diturunkan dari PdfException, sehingga menangkap PdfException saja sudah cukup untuk mencegat semua kesalahan yang diangkat oleh pustaka, sementara blok catch yang lebih spesifik memungkinkan Anda bereaksi berbeda terhadap setiap mode kegagalan.


Kesalahan Kata Sandi dan Keamanan

InvalidPasswordException dilempar ketika operasi yang dilindungi kata sandi dicoba tanpa menyediakan kata sandi yang valid, seperti membuka dokumen terenkripsi dengan kata sandi yang salah.

try
{
    var doc = new Document("encrypted.pdf", "wrong-password");
}
catch (InvalidPasswordException ex)
{
    Console.WriteLine($"Password rejected: {ex.Message}");
}

Kesalahan Format File

InvalidPdfFileFormatException dilempar ketika aliran tidak dapat dibuka sebagai PDF — header yang buruk, file terpotong, atau konten yang sama sekali tidak dapat dikenali sebagai PDF.

try
{
    var doc = new Document("not-a-pdf.txt");
}
catch (InvalidPdfFileFormatException ex)
{
    Console.WriteLine($"Not a valid PDF: {ex.Message}");
}

Kesalahan Font

Kegagalan yang terkait dengan font terbagi menjadi tiga jenis pengecualian yang berbeda, tergantung pada apa yang salah:

  • FontNotFoundException — tidak ada font sistem atau sumber font khusus yang cocok dengan nama font yang diminta.
  • UnsupportedFontTypeException — file yang diberikan sebagai font bukan program font yang dikenali.
  • IncorrectFontUsageException — operator penampilan teks muncul dalam aliran konten sementara tidak ada font yang diatur dalam keadaan grafis saat ini.
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}");
}

Kesalahan Ekstraksi Teks

PdfTextDecodingException dilemparkan ketika konten teks tidak dapat didekode, misalnya ketika pengkodean yang dirujuk oleh font tidak ada atau rusak.

try
{
    var extractor = new PdfExtractor(doc);
    extractor.GetText("output.txt");
}
catch (PdfTextDecodingException ex)
{
    Console.WriteLine($"Text decoding failed: {ex.Message}");
}

Kesalahan Tipe Formulir

InvalidFormTypeOperationException dilemparkan ketika operasi dicoba pada tipe formulir yang salah — misalnya, memanggil metode khusus XFA pada formulir yang tidak berbasis XFA.

try
{
    var form = new Form(doc);
    form.AssignXfa(xmlData);
}
catch (InvalidFormTypeOperationException ex)
{
    Console.WriteLine($"Wrong form type: {ex.Message}");
}

Tips dan Praktik Terbaik

  • Tangkap tipe pengecualian yang paling spesifik terlebih dahulu (misalnya, InvalidPasswordException) dan tambahkan blok catch (PdfException) akhir hanya sebagai cadangan untuk hal lain yang dihasilkan perpustakaan.
  • Periksa Form.IsXfa atau Form.Type sebelum memanggil metode khusus XFA untuk menghindari InvalidFormTypeOperationException.
  • Cari font dengan FontRepository.FindFont sebelum merender sehingga font yang hilang dapat ditangani secara eksplisit, alih-alih hanya mengandalkan penanganan pengecualian.
  • Ketika PdfException yang tidak terduga mencapai penangan tingkat atas Anda, buat CrashReportOptions dengan pengecualian yang ditangkap dan panggil ex.GenerateCrashReport(options) untuk menangkap laporan diagnostik bagi permintaan dukungan.
  • Selalu lewati kata sandi dokumen melalui overload konstruktor Document alih-alih membuka file terlebih dahulu dan mencoba lagi.

Masalah Umum

MasalahPenyebabPerbaikan
InvalidPasswordException saat dokumen dibukaPassword yang diberikan salah atau tidak adaBerikan password yang benar ke konstruktor Document(filename, password)
InvalidPdfFileFormatException saat dokumen dibukaFile bukan PDF, atau rusak atau terpotongVerifikasi header file dan peroleh kembali file sumber
FontNotFoundException selama proses renderingFont yang diminta tidak terpasang dan tidak ada pengganti yang terdaftarDaftarkan sumber font atau periksa FontRepository.Substitutions
UnsupportedFontTypeException dari FontRepository.OpenFontFile yang diberikan bukan program font yang dikenaliPastikan file adalah font yang valid sebelum membukanya
InvalidFormTypeOperationException pada operasi formulirMetode khusus XFA dipanggil pada formulir non-XFA, atau sebaliknyaPeriksa Form.IsXfa atau Form.Type sebelum memanggil metode khusus tipe

FAQ

Haruskah saya menangkap PdfException atau subclass spesifiknya?

Tangkap subclass spesifik, seperti InvalidPasswordException, ketika Anda perlu bereaksi secara berbeda terhadap kegagalan tersebut. Tambahkan blok catch (PdfException) akhir sebagai cadangan untuk kesalahan lain yang diangkat oleh perpustakaan.

Apakah semua pengecualian khusus PDF diturunkan dari PdfException?

Ya. PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException, dan InvalidFormTypeOperationException semuanya diturunkan dari PdfException, yang sendiri diturunkan dari System.Exception.

Untuk apa PdfExceptionMessages?

PdfExceptionMessages adalah kelas statis yang memusatkan string pesan yang muncul dari pengecualian perpustakaan dan diagnostik keamanan, termasuk pesan DangerousFile.

Bisakah saya menghasilkan laporan diagnostik ketika pengecualian terjadi?

Ya. Buat instance CrashReportOptions dengan pengecualian yang ditangkap, secara opsional atur properti seperti ApplicationTitle dan CrashReportDirectory, dan panggil GenerateCrashReport(options) pada PdfException untuk menulis laporan kerusakan yang terperinci.


API Reference Ringkasan

KelasDeskripsi
PdfExceptionPengecualian dasar untuk kesalahan selama eksekusi aplikasi PDF
PdfTextDecodingExceptionDilempar ketika konten teks tidak dapat didekode
IncorrectFontUsageExceptionDilempar ketika operator penampilan teks muncul tanpa font yang diatur dalam state grafis
InvalidPasswordExceptionDilempar ketika operasi yang dilindungi kata sandi dicoba tanpa kata sandi yang valid
InvalidPdfFileFormatExceptionDilempar ketika aliran tidak dapat dibuka sebagai PDF
FontNotFoundExceptionDilempar ketika font yang diminta tidak dapat ditemukan
UnsupportedFontTypeExceptionDilempar ketika sebuah file tidak dapat dibuka sebagai font karena formatnya tidak didukung
InvalidFormTypeOperationExceptionDilempar ketika operasi dilakukan pada tipe form yang salah
PdfExceptionMessagesString pesan terpusat yang muncul dari pengecualian dan diagnostik keamanan perpustakaan

Lihat Juga

 Bahasa Indonesia