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

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

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

ไลบรารีรายงานความล้มเหลวในการโหลดและบันทึกผ่านประเภทข้อยกเว้นสองประเภทที่กำหนดไว้: PsdLoadException และ PsdSaveException ซึ่งทั้งสองสืบทอดจากคลาสมาตรฐาน Exception.


PsdLoadException

ถูกโยนเมื่อ Image.Load() / PsdImage.Load() ไม่สามารถแยกวิเคราะห์อินพุตเป็นเอกสาร PSD หรือ PSB ที่ถูกต้องได้.

try
{
    using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}

PsdSaveException

ถูกโยนเมื่อ PsdImage.Save() ไม่สามารถเขียนเอกสารออกได้.

try
{
    image.Save(outputPath);
}
catch (PsdSaveException ex)
{
    Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}

ตัวสร้าง

ประเภทข้อยกเว้นทั้งสองมีรูปแบบคอนสตรัคเตอร์สองรูปแบบเดียวกัน: คอนสตรัคเตอร์ที่รับข้อความเท่านั้น, และคอนสตรัคเตอร์ที่รับข้อความพร้อมกับข้อยกเว้นภายในเพื่อห่อหุ้มความล้มเหลวระดับล่าง.

throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);

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

  • ดักจับ PsdLoadException รอบทุกการเรียก Image.Load()/PsdImage.Load() ที่ประมวลผลข้อมูลอินพุตจากภายนอก.
  • ดักจับ PsdSaveException รอบทุกการเรียก PsdImage.Save() หากปลายทาง (ดิสก์, สตรีม) อาจไม่สามารถเขียนได้.
  • ทั้งสองประเภทสืบทอดจาก Exception ดังนั้น catch (Exception) ที่กว้างขึ้นก็จะจับได้เช่นกัน — ควรใช้ประเภทเฉพาะเมื่อคุณต้องการแยกความล้มเหลวในการโหลดจากความล้มเหลวในการบันทึก.

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้ไข
PsdLoadException บนไฟล์ที่เปิดได้อย่างถูกต้องในเครื่องมืออื่นอินพุตไม่ใช่เอกสาร PSD/PSB ที่ถูกต้อง, หรือใช้ฟีเจอร์ที่ตัวพาร์เซอร์ของการสร้าง FOSS นี้ไม่รองรับยืนยันว่าไฟล์เป็นเอกสาร PSD/PSB ของจริง; รายงานฟีเจอร์ที่ไม่รองรับแยกจากความล้มเหลวในการโหลด
PsdSaveException เมื่อเขียนไปยังสตรีมสตรีมปลายทางอาจไม่สามารถเขียนได้หรืออาจถูกทำลายไปแล้วยืนยันว่าสตรีมเปิดและสามารถเขียนได้ก่อนเรียก Save()

FAQ

ไลบรารีนี้ทำการลองใหม่โดยอัตโนมัติหลังจากการล้มเหลวในการโหลดหรือบันทึกหรือไม่?

ไม่. PsdLoadException และ PsdSaveException จะถูกยกขึ้นหนึ่งครั้งและต้องได้รับการจัดการโดยผู้เรียก; ไม่มีการลองใหม่โดยอัตโนมัติ.

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

ใช่, เมื่อมีการให้ค่า — ทั้งคอนสตรัคเตอร์ทั้งสองรับพารามิเตอร์ innerException ซึ่งสามารถเข้าถึงได้ผ่านคุณสมบัติมาตรฐาน Exception.InnerException.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
PsdLoadException(message) / PsdLoadException(message, innerException)เกิดข้อยกเว้นเมื่อไม่สามารถโหลดเอกสาร
PsdSaveException(message) / PsdSaveException(message, innerException)เกิดข้อยกเว้นเมื่อไม่สามารถบันทึกเอกสาร

ดูเพิ่มเติม

 ภาษาไทย