การจัดการข้อยกเว้น

การจัดการข้อยกเว้น

การจัดการข้อยกเว้น

คู่มือนี้แสดงให้เห็นว่า Aspose.PDF FOSS สำหรับ .NET ส่งสัญญาณความล้มเหลวผ่านลำดับชั้นของข้อยกเว้นที่กำหนดประเภทโดยเริ่มจาก PdfException ซึ่งสืบทอดจาก System.Exception และวิธีการดักจับแต่ละประเภทของข้อผิดพลาด ทุกข้อยกเว้นที่เฉพาะเจาะจงกับ PDF ในไลบรารี — รหัสผ่านไม่ถูกต้อง, ไฟล์ไม่สามารถอ่านได้, ฟอนต์หาย, หรือการดำเนินการฟอร์มที่ไม่ถูกต้อง — สืบทอดจาก PdfException ดังนั้นการดักจับ PdfException เพียงอย่างเดียวก็เพียงพอที่จะดักจับข้อผิดพลาดใด ๆ ที่ไลบรารีโยนออกมา ในขณะที่บล็อก catch ที่เฉพาะเจาะจงมากขึ้นจะทำให้คุณสามารถตอบสนองต่อแต่ละโหมดความล้มเหลวได้แตกต่างกัน.


ข้อผิดพลาดรหัสผ่านและความปลอดภัย

InvalidPasswordException จะถูกโยนเมื่อมีการพยายามดำเนินการที่ต้องใช้รหัสผ่านโดยไม่ได้ระบุรหัสผ่านที่ถูกต้อง เช่น การเปิดเอกสารที่เข้ารหัสด้วยรหัสผ่านที่ผิด.

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

ข้อผิดพลาดรูปแบบไฟล์

InvalidPdfFileFormatException จะถูกโยนเมื่อสตรีมไม่สามารถเปิดเป็น PDF ได้ — ส่วนหัวไม่ถูกต้อง, ไฟล์ถูกตัดขาด, หรือเนื้อหาที่ไม่สามารถระบุเป็น PDF ได้เลย.

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

ข้อผิดพลาดฟอนต์

ข้อผิดพลาดที่เกี่ยวกับฟอนต์จะแบ่งออกเป็นสามประเภทของข้อยกเว้นที่แตกต่างกัน ขึ้นอยู่กับสิ่งที่ผิดพลาด:

  • FontNotFoundException — ไม่มีฟอนต์ระบบหรือแหล่งฟอนต์ที่กำหนดเองตรงกับชื่อฟอนต์ที่ร้องขอ.
  • UnsupportedFontTypeException — ไฟล์ที่ระบุเป็นฟอนต์ไม่ได้เป็นโปรแกรมฟอนต์ที่รับรู้.
  • IncorrectFontUsageException — ตัวดำเนินการแสดงข้อความปรากฏในสตรีมเนื้อหาในขณะที่ไม่มีฟอนต์ถูกตั้งค่าในสถานะกราฟิกปัจจุบัน.
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}");
}

ข้อผิดพลาดการสกัดข้อความ

PdfTextDecodingException ถูกโยนออกเมื่อเนื้อหาข้อความไม่สามารถถอดรหัสได้ ตัวอย่างเช่นเมื่อการเข้ารหัสที่อ้างอิงโดยฟอนต์หายไปหรือมีรูปแบบไม่ถูกต้อง.

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

ข้อผิดพลาดประเภทฟอร์ม

InvalidFormTypeOperationException ถูกโยนออกเมื่อพยายามทำงานกับประเภทฟอร์มที่ไม่ถูกต้อง — ตัวอย่างเช่นการเรียกเมธอดเฉพาะ XFA บนฟอร์มที่ไม่ได้ใช้ XFA.

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

เคล็ดลับและแนวปฏิบัติที่ดีที่สุด

  • ดักจับชนิดของข้อยกเว้นที่เฉพาะเจาะจงที่สุดก่อน (เช่น InvalidPasswordException) และเพิ่มบล็อก catch (PdfException) สุดท้ายไว้เป็นทางสำรองสำหรับข้อผิดพลาดอื่นใดที่ไลบรารีโยนขึ้นมา.
  • ตรวจสอบ Form.IsXfa หรือ Form.Type ก่อนเรียกวิธีการเฉพาะ XFA เพื่อหลีกเลี่ยง InvalidFormTypeOperationException.
  • ค้นหาแบบอักษรด้วย FontRepository.FindFont ก่อนทำการเรนเดอร์เพื่อให้สามารถจัดการแบบอักษรที่หายไปได้อย่างชัดเจน แทนที่จะพึ่งพาการจัดการข้อยกเว้นเท่านั้น.
  • เมื่อ PdfException ที่ไม่คาดคิดมาถึงตัวจัดการระดับบนสุดของคุณ ให้สร้าง CrashReportOptions ด้วยข้อยกเว้นที่จับได้และเรียก ex.GenerateCrashReport(options) เพื่อบันทึกรายงานการวินิจฉัยสำหรับคำขอสนับสนุน.
  • ควรส่งรหัสผ่านเอกสารผ่านการ overload ของคอนสตรักเตอร์ Document เสมอ แทนการเปิดไฟล์ก่อนแล้วลองใหม่.

ปัญหาที่พบบ่อย

ปัญหาสาเหตุวิธีแก้ไข
InvalidPasswordException เมื่อเปิดเอกสารรหัสผ่านที่ให้มาไม่ถูกต้องหรือขาดหายส่งรหัสผ่านที่ถูกต้องไปยังคอนสตรัคเตอร์ของ Document(filename, password)
InvalidPdfFileFormatException เมื่อเปิดเอกสารไฟล์ไม่ใช่ PDF หรือไฟล์เสียหายหรือถูกตัดขาดตรวจสอบส่วนหัวของไฟล์และดึงไฟล์ต้นฉบับใหม่
FontNotFoundException ระหว่างการเรนเดอร์แบบอักษรที่ร้องขอไม่ได้ติดตั้งและไม่มีแบบอักษรสำรองที่ลงทะเบียนลงทะเบียนแหล่งแบบอักษรหรือเช็ค FontRepository.Substitutions
UnsupportedFontTypeException จาก FontRepository.OpenFontไฟล์ที่ให้มาไม่ได้เป็นโปรแกรมแบบอักษรที่รู้จักยืนยันว่าไฟล์เป็นแบบอักษรที่ถูกต้องก่อนเปิด
InvalidFormTypeOperationException เกี่ยวกับการทำงานของฟอร์มเมธอดเฉพาะ XFA ถูกเรียกใช้บนฟอร์มที่ไม่ใช่ XFA หรือในทางกลับกันตรวจสอบ Form.IsXfa หรือ Form.Type ก่อนเรียกเมธอดเฉพาะประเภท

FAQ

ควรจับ PdfException หรือคลาสย่อยเฉพาะ?

ให้จับคลาสย่อยเฉพาะ เช่น InvalidPasswordException เมื่อคุณต้องการตอบสนองแตกต่างต่อความล้มเหลวนั้น เพิ่มบล็อก catch (PdfException) สุดท้ายเป็นการสำรองสำหรับข้อผิดพลาดอื่น ๆ ที่ถูกโยนโดยไลบรารี.

ข้อยกเว้นที่เฉพาะเจาะจงสำหรับ PDF ทั้งหมดสืบทอดมาจาก PdfException หรือไม่?

ใช่. PdfTextDecodingException, IncorrectFontUsageException, InvalidPasswordException, InvalidPdfFileFormatException, FontNotFoundException, UnsupportedFontTypeException และ InvalidFormTypeOperationException ทั้งหมดสืบทอดจาก PdfException ซึ่งเองก็สืบทอดจาก System.Exception.

PdfExceptionMessages มีไว้เพื่ออะไร?

PdfExceptionMessages เป็นคลาสแบบสแตติกที่รวมศูนย์สตริงข้อความที่ปรากฏจากข้อยกเว้นของไลบรารีและการวินิจฉัยความปลอดภัย รวมถึงข้อความ DangerousFile.

ฉันสามารถสร้างรายงานการวินิจฉัยเมื่อเกิดข้อยกเว้นได้หรือไม่?

ใช่. สร้างอินสแตนซ์ของ CrashReportOptions ด้วยข้อยกเว้นที่จับได้ ตั้งค่าคุณสมบัติ เช่น ApplicationTitle และ CrashReportDirectory ตามต้องการ แล้วเรียก GenerateCrashReport(options) บน PdfException เพื่อเขียนรายงานการล่มที่ละเอียด.


API Reference สรุป

คลาสคำอธิบาย
PdfExceptionข้อยกเว้นพื้นฐานสำหรับข้อผิดพลาดระหว่างการดำเนินการแอปพลิเคชัน PDF
PdfTextDecodingExceptionเกิดขึ้นเมื่อไม่สามารถถอดรหัสเนื้อหาข้อความได้
IncorrectFontUsageExceptionถูกโยนเมื่อมีตัวดำเนินการแสดงข้อความปรากฏโดยไม่มีแบบอักษรตั้งค่าในสถานะกราฟิก
InvalidPasswordExceptionถูกโยนเมื่อพยายามทำการดำเนินการที่มีการป้องกันด้วยรหัสผ่านโดยไม่มีรหัสผ่านที่ถูกต้อง
InvalidPdfFileFormatExceptionถูกโยนเมื่อสตรีมไม่สามารถเปิดเป็น PDF ได้
FontNotFoundExceptionถูกโยนเมื่อไม่พบแบบอักษรที่ร้องขอ
UnsupportedFontTypeExceptionเกิดขึ้นเมื่อไฟล์ไม่สามารถเปิดเป็นแบบอักษรได้ เนื่องจากรูปแบบของไฟล์ไม่รองรับ
InvalidFormTypeOperationExceptionเกิดขึ้นเมื่อพยายามดำเนินการกับประเภทฟอร์มที่ไม่ถูกต้อง
PdfExceptionMessagesสตริงข้อความศูนย์กลางที่ปรากฏจากข้อยกเว้นของไลบรารีและการวินิจฉัยด้านความปลอดภัย

ดูเพิ่มเติม

 ภาษาไทย