Pengecualian Inti

Pengecualian Inti

Aspose.PSD FOSS untuk Python mendefinisikan dua jenis pengecualian yang spesifik untuk penanganan PSD/PSB: PsdLoadException, yang diangkat saat parsing dokumen, dan PsdSaveException, yang diangkat saat menulis dokumen. Keduanya diturunkan dari Exception bawaan dan menerima pesan serta inner_exception opsional.


Menangkap Kegagalan Saat Muat

PsdLoadException diangkat untuk beberapa kegagalan validasi struktural saat parsing dokumen:

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

Pesan umum meliputi "Invalid PSD signature. Expected '8BPS' (0x38425053)." (berkas tidak dimulai dengan tanda tangan PSD/PSB), "Unsupported PSD version: {n}. ..." (field versi bukan PSD maupun PSB), dan "{section} length {n} exceeds the enclosing section boundary." (panjang yang dinyatakan untuk sebuah bagian tidak konsisten dengan ukuran sebenarnya dari berkas).


Menangkap Kegagalan Saat Simpan

PsdSaveException memiliki satu lokasi pengangkatan dalam build FOSS ini — pemeriksaan panjang string 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}")

Pesannya adalah "PSD Pascal string length {n} exceeds the supported maximum 255." — muncul ketika nama lapisan atau sumber daya melebihi 255 byte.


Memeriksa Pengecualian Internal

Kedua tipe pengecualian menerima argumen konstruktor inner_exception, yang diisi ketika kegagalan I/O yang mendasari menyebabkan pengecualian:

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

Pola NotSupportedException

Beberapa setter properti di tempat lain dalam API memicu NotSupportedException daripada PsdLoadException/PsdSaveException — ini menandakan properti yang sengaja bersifat baca-saja dalam build FOSS ini, bukan kegagalan parsing atau penulisan. Lihat Resources and Layers untuk properti spesifik yang terpengaruh.


Tips dan Praktik Terbaik

  • Tangkap PsdLoadException dan PsdSaveException secara khusus alih-alih Exception dasar ketika Anda perlu membedakan kegagalan pemuatan dari kegagalan penyimpanan.
  • ArgumentNullException (muncul ketika PsdImage.load dipanggil dengan aliran None) dan NotSupportedException adalah tipe pengecualian terpisah — bukan varian dari PsdLoadException/PsdSaveException.

Masalah Umum

MasalahPenyebabPerbaikan
PsdLoadException tentang versi yang tidak didukungKolom versi file tidak berupa nilai standar PSD maupun PSBPastikan file tersebut merupakan dokumen PSD/PSB yang asli dan tidak rusak
PsdSaveException tentang panjang string PascalNama lapisan atau sumber daya melebihi 255 bytePerpendek nilai sebelum menyimpan

FAQ

Apakah PsdLoadException dan PsdSaveException berbagi tipe pengecualian dasar yang sama?

Tidak — keduanya diturunkan langsung dari Exception bawaan, bukan dari satu sama lain atau kelas pengecualian dasar Aspose.PSD yang bersama.

Apakah menangkap Exception juga akan menangkap kedua tipe ini?

Ya, karena keduanya diturunkan dari Exception — tetapi menangkap tipe spesifik memungkinkan Anda membedakan kegagalan pemuatan dari kegagalan penyimpanan.


Ringkasan API Reference

Kelas/MetodeDeskripsi
PsdLoadException(message, inner_exception=None)Dilempar saat parsing dokumen
PsdSaveException(message, inner_exception=None)Dilempar saat penulisan dokumen
NotSupportedException(message, inner_exception=None)Dilempar oleh setter read-only-in-this-FOSS-build

Lihat Juga

 Bahasa Indonesia