Základní výjimky

Základní výjimky

Knihovna hlásí selhání načítání a ukládání pomocí dvou vyhrazených typů výjimek: PsdLoadException a PsdSaveException, které oba rozšiřují standardní třídu Exception.


PsdLoadException

Vyvolána, když Image.Load() / PsdImage.Load() nedokáže analyzovat vstup jako platný dokument PSD nebo PSB.

try
{
    using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}

PsdSaveException

Vyvolána, když PsdImage.Save() nedokáže dokument zapsat.

try
{
    image.Save(outputPath);
}
catch (PsdSaveException ex)
{
    Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}

Konstruktory

Oba typy výjimek mají stejný dvou-konstruktorový tvar: konstruktor jen se zprávou a konstruktor se zprávou a vnitřní výjimkou pro zabalení selhání nižší úrovně.

throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);

Tipy a osvědčené postupy

  • Zachyťte PsdLoadException kolem každého volání Image.Load()/PsdImage.Load(), které zpracovává externí vstup.
  • Zachyťte PsdSaveException kolem každého volání PsdImage.Save(), pokud cíl (disk, proud) nemusí být zapisovatelný.
  • Oba typy dědí od Exception, takže širší catch (Exception) je také zachytí — upřednostněte konkrétní typy, když chcete rozlišovat selhání načítání od selhání ukládání.

Časté problémy

ProblémPříčinaOprava
PsdLoadException na souboru, který se v jiných nástrojích otevírá správněVstup není platný PSD/PSB dokument, nebo používá funkci, kterou parser této verze FOSS nepoznáOvěřte, že soubor je skutečný PSD/PSB dokument; nahlaste nepodporované funkce odděleně od selhání načítání
PsdSaveException při zápisu do prouduCílový proud nemusí být zapisovatelný nebo byl již uvolněnPotvrďte, že je stream otevřený a zapisovatelný, než zavoláte Save()

FAQ

Zkouší tato knihovna automaticky znovu po selhání načtení nebo uložení?

Ne. PsdLoadException a PsdSaveException jsou vyvolány jednou a musí být ošetřeny volajícím; neexistuje automatické opakování.

Mohu si prohlédnout původní příčinu zabalené výjimky?

Ano, pokud je poskytnut — oba konstruktory přijímají parametr innerException, přístupný přes standardní vlastnost Exception.InnerException.


API Reference Shrnutí

Třída/MetodaPopis:
PsdLoadException(message) / PsdLoadException(message, innerException)Vyvoláno, když nelze načíst dokument
PsdSaveException(message) / PsdSaveException(message, innerException)Vyvoláno, když nelze uložit dokument

Viz také:

 Čeština