ข้อยกเว้นหลัก

ข้อยกเว้นหลัก

ข้อยกเว้นหลัก

Aspose.PSD FOSS สำหรับ Python กำหนดประเภทข้อยกเว้นสองประเภทที่เฉพาะเจาะจงต่อการจัดการ PSD/PSB: PsdLoadException, ซึ่งถูกยกขึ้นขณะพาร์สเอกสาร, และ PsdSaveException, ซึ่งถูกยกขึ้นขณะเขียนเอกสารหนึ่ง. ทั้งสองสืบทอดจาก Exception ที่มีมาในระบบและรับข้อความพร้อมกับ inner_exception ที่เป็นตัวเลือก.


การจับข้อผิดพลาดขณะโหลด

PsdLoadException ถูกยกขึ้นสำหรับหลายกรณีการตรวจสอบโครงสร้างขณะพาร์สเอกสาร:

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    print(f"Failed to load PSD/PSB file: {ex}")

ข้อความทั่วไปรวมถึง "Invalid PSD signature. Expected '8BPS' (0x38425053)." (ไฟล์ไม่ได้เริ่มด้วยลายเซ็น PSD/PSB), "Unsupported PSD version: {n}. ..." (ฟิลด์เวอร์ชันไม่ใช่ PSD nor PSB), และ "{section} length {n} exceeds the enclosing section boundary." (ความยาวที่ระบุของส่วนไม่สอดคล้องกับขนาดจริงของไฟล์).


การจับข้อผิดพลาดขณะบันทึก

PsdSaveException มีจุดยกเดียวในการสร้าง FOSS นี้ — การตรวจสอบความยาวของสตริง Pascal:

from aspose_psd_foss.coreexceptions.psdsaveexception import PsdSaveException

try:
    image.save(output_path)
except PsdSaveException as ex:
    print(f"Failed to save PSD/PSB file: {ex}")

ข้อความของมันคือ "PSD Pascal string length {n} exceeds the supported maximum 255." — ถูกสร้างขึ้นเมื่อชื่อเลเยอร์หรือทรัพยากรเกิน 255 ไบต์.


การตรวจสอบข้อยกเว้นภายใน

ทั้งสองประเภทของข้อยกเว้นรับอาร์กิวเมนต์ตัวสร้าง inner_exception ซึ่งจะถูกกำหนดค่าเมื่อความล้มเหลวของ I/O ภายในทำให้เกิดข้อยกเว้น:

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    if ex.inner_exception is not None:
        print(f"Underlying cause: {ex.inner_exception}")

รูปแบบ NotSupportedException

ตัวกำหนดค่าคุณสมบัติบางส่วนในส่วนอื่นของ API ทำให้เกิด NotSupportedException แทนที่จะ PsdLoadException/PsdSaveException — สิ่งนี้บ่งชี้ว่าคุณสมบัตินั้นตั้งใจให้เป็นแบบอ่านอย่างเดียวในรุ่น FOSS นี้ ไม่ได้เป็นความล้มเหลวในการแยกวิเคราะห์หรือการเขียน ดู Resources and Layers สำหรับคุณสมบัติเฉพาะที่ได้รับผลกระทบ.


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

  • ให้จับ PsdLoadException และ PsdSaveException อย่างเฉพาะเจาะจงแทนการใช้ฐาน Exception เมื่อคุณต้องการแยกความล้มเหลวในการโหลดออกจากความล้มเหลวในการบันทึก.
  • ArgumentNullException (ถูกสร้างขึ้นเมื่อ PsdImage.load ถูกเรียกด้วยสตรีม None) และ NotSupportedException เป็นประเภทข้อยกเว้นที่แยกจากกัน — ไม่ใช่รูปแบบย่อยของ PsdLoadException/PsdSaveException.

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้
PsdLoadException เกี่ยวกับเวอร์ชันที่ไม่รองรับฟิลด์เวอร์ชันของไฟล์ไม่ใช่ค่ามาตรฐานของ PSD หรือ PSBยืนยันว่าไฟล์เป็นเอกสาร PSD/PSB ที่แท้จริงและไม่เสียหาย
PsdSaveException เกี่ยวกับความยาวของสตริง Pascalชื่อเลเยอร์หรือทรัพยากรเกิน 255 ไบต์ทำให้ค่าสั้นลงก่อนบันทึก

FAQ

PsdLoadException และ PsdSaveException มีประเภทข้อยกเว้นพื้นฐานร่วมกันหรือไม่?

ไม่ — ทั้งสองสืบทอดโดยตรงจาก Exception ที่มาพร้อมในระบบ ไม่ได้จากกันและกันหรือคลาสข้อยกเว้นพื้นฐานร่วม Aspose.PSD.

การดักจับ Exception จะดักจับประเภททั้งสองนี้ด้วยหรือไม่?

ใช่, เนื่องจากทั้งสองสืบทอดจาก Exception — แต่การดักจับประเภทเฉพาะจะทำให้คุณแยกความล้มเหลวในการโหลดออกจากการบันทึกได้.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
PsdLoadException(message, inner_exception=None)เกิดขึ้นระหว่างการแยกวิเคราะห์เอกสาร
PsdSaveException(message, inner_exception=None)เกิดขึ้นระหว่างการเขียนเอกสาร
NotSupportedException(message, inner_exception=None)เกิดขึ้นโดยตัวตั้งค่า read-only-in-this-FOSS-build

ดูเพิ่มเติม

 ภาษาไทย