コア例外
コア例外
Aspose.PSD FOSS for Python は、PSD/PSB 処理に特化した 2 つの例外タイプを定義します: ドキュメントの解析中に発生する 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 でも PSB でもない)、および "{section} length {n} exceeds the enclosing section boundary."(セクションの宣言長がファイルの実際のサイズと一致しない)が含まれます。
保存時の失敗を捕捉する
この FOSS ビルドでは、PsdSaveException の送出箇所は 1 か所だけで、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}")The NotSupportedException パターン
他の場所にある API のいくつかのプロパティセッターが raise NotSupportedException ではなく PsdLoadException/PsdSaveException — これは、この FOSS ビルドで意図的に読み取り専用となっているプロパティを示しており、パースや書き込みの失敗ではありません。参照 Resources and Layers 影響を受ける特定のプロパティについては.
ヒントとベストプラクティス
- ロード失敗と保存失敗を区別する必要がある場合は、基本の
Exceptionではなく、PsdLoadExceptionとPsdSaveExceptionを個別に捕捉してください。 ArgumentNullException(PsdImage.loadがNoneストリームで呼び出されたときに発生)とNotSupportedExceptionは別個の例外型です —PsdLoadException/PsdSaveExceptionのバリアントではありません。
一般的な問題
| 問題 | 原因 | 修正 |
|---|---|---|
PsdLoadException はサポートされていないバージョンに関する | ファイルのバージョンフィールドが標準の PSD でも PSB でもない値です | ファイルが真正かつ破損していない PSD/PSB ドキュメントであることを確認してください |
PsdSaveException は Pascal 文字列の長さに関するものです | レイヤーまたはリソース名が 255 バイトを超えています | 保存する前に値を短くしてください |
FAQ
PsdLoadException と PsdSaveException は共通の基底例外型を共有していますか?
いいえ — 両方とも組み込みの Exception から直接派生しており、互いにあるいは共有の Aspose.PSD 基底例外クラスからは派生していません。
Exception を捕捉すると、これら 2 つの型も捕捉されますか?
はい、両方とも Exception から派生しているためです — ただし、特定の型を捕捉することで、ロード失敗と保存失敗を区別できます。
API Reference の概要
| クラス/メソッド | 説明 |
|---|---|
PsdLoadException(message, inner_exception=None) | ドキュメントの解析中に発生しました |
PsdSaveException(message, inner_exception=None) | 文書作成中に発生 |
NotSupportedException(message, inner_exception=None) | read-only-in-this-FOSS-build セッターによって発生 |