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
PsdLoadExceptionrunt varjeImage.Load()/PsdImage.Load()-anrop som bearbetar extern input. - Fånga
PsdSaveExceptionrunt varjePsdImage.Save()-anrop om destinationen (disk, ström) kanske inte är skrivbar. - Båda typerna ärver
Exception, så en bredarecatch (Exception)också fångar dem — föredra de specifika typerna när du vill särskilja laddningsfel från sparfel.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
PsdLoadException på en fil som öppnas korrekt i andra verktyg | Inmatningen är inte ett giltigt PSD/PSB-dokument, eller använder en funktion som parsern i denna FOSS-byggnad inte känner igen | Bekrä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öm | Destinationsströmmen kanske inte är skrivbar eller kan redan ha frigjorts | Bekrä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/Metod | Beskrivning |
|---|---|
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 |