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 PsdLoadException wokół każdego wywołania Image.Load()/PsdImage.Load(), które przetwarza dane zewnętrzne.
  • Przechwytuj PsdSaveException wokół każdego wywołania PsdImage.Save(), jeśli docelowy (dysk, strumień) może nie być zapisywalny.
  • Oba typy dziedziczą po Exception, więc szerszy catch (Exception) również je przechwytuje — preferuj konkretne typy, gdy chcesz odróżnić błędy ładowania od błędów zapisu.

Typowe problemy

ProblemPrzyczynaNaprawa
PsdLoadException na pliku, który otwiera się poprawnie w innych narzędziachWejście nie jest prawidłowym dokumentem PSD/PSB lub używa funkcji, której parser tej wersji FOSS nie rozpoznajePotwierdź, że plik jest autentycznym dokumentem PSD/PSB; zgłoś nieobsługiwane funkcje oddzielnie od błędów ładowania
PsdSaveException podczas zapisu do strumieniaDocelowy strumień może nie być zapisywalny lub został już zwolnionyUpewnij 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/MetodaOpis
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

Zobacz także

 Polski