Các ngoại lệ cốt lõi

Các ngoại lệ cốt lõi

Các ngoại lệ cốt lõi

Aspose.PSD FOSS cho Python định nghĩa hai loại ngoại lệ đặc thù cho việc xử lý PSD/PSB: PsdLoadException, được ném khi phân tích một tài liệu, và PsdSaveException, được ném khi ghi một tài liệu. Cả hai đều kế thừa từ Exception tích hợp và chấp nhận một thông điệp cộng với một inner_exception tùy chọn.


Bắt các lỗi thời gian tải

PsdLoadException được ném cho một số lỗi xác thực cấu trúc khi phân tích một tài liệu:

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}")

Các thông điệp phổ biến bao gồm "Invalid PSD signature. Expected '8BPS' (0x38425053)." (tệp không bắt đầu bằng chữ ký PSD/PSB), "Unsupported PSD version: {n}. ..." (trường phiên bản không phải là PSD cũng không phải là PSB), và "{section} length {n} exceeds the enclosing section boundary." (độ dài đã khai báo của một phần không khớp với kích thước thực tế của tệp).


Bắt các lỗi thời gian lưu

PsdSaveException có một vị trí ném duy nhất trong bản dựng FOSS này — một kiểm tra độ dài chuỗi 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}")

Thông báo của nó là "PSD Pascal string length {n} exceeds the supported maximum 255." — được ném khi tên lớp hoặc tài nguyên vượt quá 255 byte.


Kiểm tra Ngoại lệ Nội bộ

Cả hai loại ngoại lệ đều chấp nhận đối số khởi tạo inner_exception, được điền khi một lỗi I/O nền gây ra ngoại lệ:

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

Mẫu NotSupportedException

Một số bộ đặt thuộc tính ở các nơi khác trong API gây ra NotSupportedException thay vì PsdLoadException/PsdSaveException — điều này cho thấy một thuộc tính được cố ý đặt ở chế độ chỉ đọc trong bản dựng FOSS này, không phải là lỗi phân tích hoặc ghi. Xem Resources and Layers đối với các thuộc tính cụ thể bị ảnh hưởng.


Mẹo và Thực tiễn Tốt nhất

  • Bắt PsdLoadException và PsdSaveException một cách cụ thể thay vì Exception cơ bản khi bạn cần phân biệt lỗi tải và lỗi lưu.
  • ArgumentNullException (được ném khi PsdImage.load được gọi với một luồng None) và NotSupportedException là các loại ngoại lệ riêng biệt — không phải là biến thể của PsdLoadException/PsdSaveException.

Các vấn đề thường gặp

Vấn đềNguyên nhânKhắc phục
PsdLoadException về một phiên bản không được hỗ trợTrường phiên bản của tệp không phải là giá trị chuẩn PSD hoặc PSBXác nhận tệp là tài liệu PSD/PSB gốc, không bị hỏng
PsdSaveException về độ dài chuỗi PascalTên layer hoặc tài nguyên vượt quá 255 byteRút ngắn giá trị trước khi lưu

FAQ

Liệu PsdLoadException và PsdSaveException có chia sẻ một kiểu ngoại lệ cơ sở chung không?

Không — cả hai đều kế thừa trực tiếp từ Exception tích hợp, không phải từ nhau hoặc một lớp ngoại lệ cơ sở Aspose.PSD chung.

Việc bắt Exception có cũng bắt cả hai kiểu này không?

Có, vì cả hai đều kế thừa từ Exception — nhưng bắt các kiểu cụ thể cho phép bạn phân biệt lỗi tải và lỗi lưu.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
PsdLoadException(message, inner_exception=None)Phát sinh trong quá trình phân tích tài liệu
PsdSaveException(message, inner_exception=None)Phát sinh trong quá trình viết tài liệu
NotSupportedException(message, inner_exception=None)Được sinh ra bởi các setter read-only-in-this-FOSS-build

Xem thêm

 Tiếng Việt