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
PsdLoadExceptionkolem každého voláníImage.Load()/PsdImage.Load(), které zpracovává externí vstup. - Zachyťte
PsdSaveExceptionkolem 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ém | Příčina | Oprava |
|---|---|---|
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 proudu | Cílový proud nemusí být zapisovatelný nebo byl již uvolněn | Potvrď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/Metoda | Popis: |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Vyvoláno, když nelze načíst dokument |
PsdSaveException(message) / PsdSaveException(message, innerException) | Vyvoláno, když nelze uložit dokument |