コア例外
コア例外
このライブラリは、ロードと保存の失敗を 2 つの専用例外型で報告します: 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}");
}コンストラクタ
両方の例外型は同じ 2 つのコンストラクタ形状を持ちます。1 つはメッセージのみのコンストラクタ、もう 1 つは下位レベルの失敗をラップするためのメッセージ+内部例外コンストラクタです。
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);ヒントとベストプラクティス
- 外部入力を処理するすべての
Image.Load()/PsdImage.Load()呼び出しの周囲でPsdLoadExceptionを捕捉してください。 - 宛先(ディスク、ストリーム)が書き込み不可になる可能性がある場合は、すべての
PsdImage.Save()呼び出しの周囲でPsdSaveExceptionを捕捉してください。 - 両方の型は
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) | ドキュメントの保存に失敗したときにスローされます |