コア例外

コア例外

このライブラリは、ロードと保存の失敗を 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)ドキュメントの保存に失敗したときにスローされます

参照

 日本語