Alapvető Kivételek
Alap kivételek
A könyvtár a betöltési és mentési hibákat két dedikált kivételtípuson keresztül jelenti: PsdLoadException és PsdSaveException, amelyek mindkettő a szabványos Exception osztályból származnak.
PsdLoadException
Kivétel akkor, ha a Image.Load() / PsdImage.Load() nem tudja értelmezni a bemenetet érvényes PSD vagy PSB dokumentumként.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Kivétel akkor, ha a PsdImage.Save() nem tudja kiírni a dokumentumot.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Konstruktorok
Mindkét kivételtípus ugyanazzal a kétkonstruktoros felépítéssel rendelkezik: egy csak üzenetet fogadó konstruktor, valamint egy üzenet-plusz-belső-kivétel konstruktor, amely alacsonyabb szintű hibát csomagol be.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Tippek és legjobb gyakorlatok
- Kapja el
PsdLoadExceptionmindenImage.Load()/PsdImage.Load()hívás körül, amely külső bemenetet dolgoz fel. - Kapja el
PsdSaveExceptionmindenPsdImage.Save()hívás körül, ha a cél (lemez, adatfolyam) esetleg nem írható. - Mindkét típus a
Exception-t bővíti, így egy általánosabbcatch (Exception)is elkapja őket — részesítse előnyben a specifikus típusokat, ha meg szeretné különböztetni a betöltési hibákat a mentési hibáktól.
Általános problémák
| Probléma | Ok | Javítás |
|---|---|---|
PsdLoadException egy fájlon, amely más eszközökben rendben megnyílik | A bemenet nem érvényes PSD/PSB dokumentum, vagy egy olyan funkciót használ, amelyet ez a FOSS build elemzője nem ismer fel | Erősítse meg, hogy a fájl valódi PSD/PSB dokumentum; jelentse a nem támogatott funkciókat külön a betöltési hibáktól |
PsdSaveException írásakor egy adatfolyamra | A cél adatfolyam lehet, hogy nem írható, vagy már el lett dobva | Mielőtt meghívná a(z) Save(), ellenőrizze, hogy a stream nyitva és írható. |
FAQ
Újrapróbálkozik-e ez a könyvtár automatikusan egy betöltési vagy mentési hiba után?
Nem. A PsdLoadException és a PsdSaveException egyszer kerülnek kiváltásra, és a hívónak kell kezelnie őket; nincs automatikus újrapróbálkozás.
Megvizsgálhatom a becsomagolt kivétel eredeti okát?
Igen, ha meg van adva — mindkét konstruktor elfogad egy innerException paramétert, amely a standard Exception.InnerException tulajdonságon keresztül érhető el.
API Reference összegzés
| Osztály/Módszer | Leírás |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Kivétel, ha a dokumentumot nem lehet betölteni |
PsdSaveException(message) / PsdSaveException(message, innerException) | Kivétel, ha a dokumentumot nem lehet menteni |