Kärnutantag

Grundläggande undantag

Biblioteket rapporterar inläsnings- och sparningsfel via två dedikerade undantagstyper: PsdLoadException och PsdSaveException, som båda ärver den standard Exception klassen.


PsdLoadException

Kastas när Image.Load() / PsdImage.Load() inte kan tolka indatan som ett giltigt PSD- eller PSB-dokument.

try
{
    using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}

PsdSaveException

Kastas när PsdImage.Save() inte kan skriva ut dokumentet.

try
{
    image.Save(outputPath);
}
catch (PsdSaveException ex)
{
    Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}

Konstruktorer

Båda undantagstyperna har samma tvåkonstruktörsstruktur: en konstruktor som endast tar ett meddelande, och en konstruktor som tar ett meddelande plus ett inre undantag för att omsluta ett fel på lägre nivå.

throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);

Tips och bästa praxis

  • Fånga PsdLoadException runt varje Image.Load()/PsdImage.Load()-anrop som bearbetar extern input.
  • Fånga PsdSaveException runt varje PsdImage.Save()-anrop om destinationen (disk, ström) kanske inte är skrivbar.
  • Båda typerna ärver Exception, så en bredare catch (Exception) också fångar dem — föredra de specifika typerna när du vill särskilja laddningsfel från sparfel.

Vanliga problem

ProblemOrsakLösning
PsdLoadException på en fil som öppnas korrekt i andra verktygInmatningen är inte ett giltigt PSD/PSB-dokument, eller använder en funktion som parsern i denna FOSS-byggnad inte känner igenBekräfta att filen är ett äkta PSD/PSB-dokument; rapportera icke-stödda funktioner separat från inläsningsfel
PsdSaveException vid skrivning till en strömDestinationsströmmen kanske inte är skrivbar eller kan redan ha frigjortsBekräfta att strömmen är öppen och skrivbar innan du anropar Save()

FAQ

Försöker detta bibliotek automatiskt igen efter ett laddnings- eller sparfel?

Nej. PsdLoadException och PsdSaveException kastas en gång och måste hanteras av anroparen; det finns ingen automatisk omförsök.

Kan jag inspektera den ursprungliga orsaken till ett inlindat undantag?

Ja, när en sådan tillhandahålls — båda konstruktorerna accepterar en innerException parameter, åtkomlig via den standard Exception.InnerException egenskapen.


API Reference Sammanfattning

Klass/MetodBeskrivning
PsdLoadException(message) / PsdLoadException(message, innerException)Kastas när ett dokument inte kan läsas in
PsdSaveException(message) / PsdSaveException(message, innerException)Kastas när ett dokument inte kan sparas

Se även

 Svenska