Podstawowe wyjątki
Podstawowe wyjątki
Biblioteka zgłasza niepowodzenia ładowania i zapisu za pomocą dwóch dedykowanych typów wyjątków: PsdLoadException i PsdSaveException, oba rozszerzające standardową klasę Exception.
PsdLoadException
Rzucany, gdy Image.Load() / PsdImage.Load() nie może sparsować wejścia jako prawidłowy dokument PSD lub PSB.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Rzucany, gdy PsdImage.Save() nie może zapisać dokumentu.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Konstruktory
Oba typy wyjątków mają taką samą dwukonstruktorową strukturę: konstruktor przyjmujący tylko komunikat oraz konstruktor przyjmujący komunikat i wewnętrzny wyjątek, służący do opakowania niższego poziomu błędu.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Wskazówki i najlepsze praktyki
- Przechwytuj
PsdLoadExceptionwokół każdego wywołaniaImage.Load()/PsdImage.Load(), które przetwarza dane zewnętrzne. - Przechwytuj
PsdSaveExceptionwokół każdego wywołaniaPsdImage.Save(), jeśli docelowy (dysk, strumień) może nie być zapisywalny. - Oba typy dziedziczą po
Exception, więc szerszycatch (Exception)również je przechwytuje — preferuj konkretne typy, gdy chcesz odróżnić błędy ładowania od błędów zapisu.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
PsdLoadException na pliku, który otwiera się poprawnie w innych narzędziach | Wejście nie jest prawidłowym dokumentem PSD/PSB lub używa funkcji, której parser tej wersji FOSS nie rozpoznaje | Potwierdź, że plik jest autentycznym dokumentem PSD/PSB; zgłoś nieobsługiwane funkcje oddzielnie od błędów ładowania |
PsdSaveException podczas zapisu do strumienia | Docelowy strumień może nie być zapisywalny lub został już zwolniony | Upewnij się, że strumień jest otwarty i zapisywalny przed wywołaniem Save() |
FAQ
Czy ta biblioteka automatycznie ponawia próbę po niepowodzeniu ładowania lub zapisu?
Nie. PsdLoadException i PsdSaveException są podnoszone jednokrotnie i muszą być obsłużone przez wywołującego; nie ma automatycznego ponawiania.
Czy mogę sprawdzić oryginalną przyczynę opakowanego wyjątku?
Tak, gdy jest podany — oba konstruktory przyjmują parametr innerException, dostępny poprzez standardową właściwość Exception.InnerException.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Rzucany, gdy dokument nie może zostać załadowany |
PsdSaveException(message) / PsdSaveException(message, innerException) | Rzucany, gdy dokument nie może zostać zapisany |