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
PsdLoadExceptiondanPsdSaveExceptionsecara khusus alih-alihExceptiondasar ketika Anda perlu membedakan kegagalan pemuatan dari kegagalan penyimpanan. ArgumentNullException(muncul ketikaPsdImage.loaddipanggil dengan aliranNone) danNotSupportedExceptionadalah tipe pengecualian terpisah — bukan varian dariPsdLoadException/PsdSaveException.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
PsdLoadException tentang versi yang tidak didukung | Kolom versi file tidak berupa nilai standar PSD maupun PSB | Pastikan file tersebut merupakan dokumen PSD/PSB yang asli dan tidak rusak |
PsdSaveException tentang panjang string Pascal | Nama lapisan atau sumber daya melebihi 255 byte | Perpendek 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/Metode | Deskripsi |
|---|---|
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 |