Kern-Ausnahmen
Kern-Ausnahmen
Die Bibliothek meldet Lade- und Speicherfehler über zwei dedizierte Ausnahmetypen: PsdLoadException und PsdSaveException, die beide die Standardklasse Exception erweitern.
PsdLoadException
Ausgelöst, wenn Image.Load() / PsdImage.Load() die Eingabe nicht als gültiges PSD- oder PSB-Dokument parsen kann.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Ausgelöst, wenn PsdImage.Save() das Dokument nicht schreiben kann.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Konstruktoren
Beide Ausnahmetypen besitzen dieselbe Zweikonstruktor-Struktur: einen Konstruktor, der nur eine Nachricht akzeptiert, und einen Konstruktor, der eine Nachricht plus innere Ausnahme zur Kapselung eines tieferliegenden Fehlers akzeptiert.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Tipps und bewährte Vorgehensweisen
- Fange
PsdLoadExceptionum jedenImage.Load()/PsdImage.Load()-Aufruf, der externe Eingaben verarbeitet, ein. - Fange
PsdSaveExceptionum jedenPsdImage.Save()-Aufruf ein, falls das Ziel (Festplatte, Stream) möglicherweise nicht beschreibbar ist. - Beide Typen erweitern
Exception, daher fängt ein breiterescatch (Exception)sie ebenfalls ab—bevorzugen Sie die spezifischen Typen, wenn Sie Ladefehler von Speicherfehlern unterscheiden möchten.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
PsdLoadException auf einer Datei, die sich in anderen Werkzeugen problemlos öffnen lässt | Die Eingabe ist kein gültiges PSD/PSB-Dokument oder verwendet ein Merkmal, das der Parser dieser FOSS-Version nicht erkennt | Stellen Sie sicher, dass die Datei ein echtes PSD/PSB-Dokument ist; melden Sie nicht unterstützte Funktionen getrennt von Ladefehlern |
PsdSaveException beim Schreiben in einen Stream | Der Ziel-Stream ist möglicherweise nicht beschreibbar oder wurde bereits freigegeben | Bestätigen Sie, dass der Stream geöffnet und beschreibbar ist, bevor Sie Save() aufrufen. |
FAQ
Versucht diese Bibliothek nach einem Lade- oder Speicherfehler automatisch erneut?
Nein. PsdLoadException und PsdSaveException werden einmal ausgelöst und müssen vom Aufrufer behandelt werden; es gibt keinen automatischen Wiederholungsversuch.
Kann ich die ursprüngliche Ursache einer wrapped exception untersuchen?
Ja, wenn einer bereitgestellt wird — beide Konstruktoren akzeptieren einen innerException-Parameter, der über die standardmäßige Exception.InnerException-Eigenschaft zugänglich ist.
API Reference Zusammenfassung
| Klasse/Methode | Beschreibung |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Wird ausgelöst, falls ein Dokument nicht geladen werden kann |
PsdSaveException(message) / PsdSaveException(message, innerException) | Wird ausgelöst, falls ein Dokument nicht gespeichert werden kann |