Hur man hanterar PSD Core-undantag i .NET

Hur man hanterar PSD Core-undantag i .NET

Aspose.PSD FOSS för .NET definierar två undantagstyper: PsdLoadException, kastad när ett PSD/PSB-dokument parsas, och PsdSaveException, kastad när ett sådant skrivs. Båda ärver från System.Exception och stöder en konstruktor som bara tar ett meddelande samt en konstruktor som tar ett meddelande och ett inre undantag.

Steg-för-steg-guide

Steg 1: Installera paketet

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build

Steg 2: Importera nödvändiga klasser

using Aspose.PSD.FileFormats.Psd;

Steg 3: Fånga fel vid laddningstid

PsdLoadException kastas när ett dokuments struktur misslyckas med validering — till exempel en ej stödd PSD/PSB-version, en sektionslängd som överskrider den omgivande sektionens deklarerade gräns, eller trunkerad strömdatat:

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load PSD/PSB file: {ex.Message}");
}

Steg 4: Fånga fel vid sparning

PsdSaveException kastas när ett dokument skrivs — till exempel när ett strängvärde överskrider den längd som ett PSD Pascal-strängfält kan rymma:

try
{
    image.Save("output.psd");
}
catch (PsdSaveException ex)
{
    Console.WriteLine($"Failed to save PSD/PSB file: {ex.Message}");
}

Steg 5: Inspektera ett inre undantag

Båda undantagstyperna har en konstruktor som omsluter ett inre undantag (används internt, till exempel när ett I/O-fel avbryter läsning av filstrukturen). Kontrollera InnerException för den underliggande orsaken:

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex) when (ex.InnerException != null)
{
    Console.WriteLine($"Underlying I/O error: {ex.InnerException.Message}");
}

Vanliga problem och lösningar

PsdLoadException med ett meddelande om en version som inte stöds. Filens deklarerade PSD-versionsfält är varken standard-PSD eller det stora dokument-PSB-värdet. Bekräfta att filen är ett äkta, okorrumperat PSD/PSB-dokument.

PsdLoadException med ett meddelande om att en sektionslängd överskrider en gräns. Filens interna längdfält stämmer inte överens med dess faktiska storlek — detta indikerar vanligtvis en avhuggen eller korrupt fil snarare än en version som inte stöds.

PsdSaveException om en Pascal-stränglängd. Ett strängvärde (t.ex. ett lager- eller resursnamn) överskrider 255 byte, det maximala som ett PSD-Pascal-strängfält kan koda. Förkorta värdet innan du sparar.

Vanliga frågor

Delar PsdLoadException och PsdSaveException en gemensam basklass för undantag?

Nej — båda ärver direkt från System.Exception, inte från varandra eller en gemensam Aspose.PSD basklass för undantag.

Kan PsdSaveException uppstå av andra orsaker än ett långt strängvärde?

Den bekräftade kastplatsen i detta FOSS-bygge är kontrollen av Pascal-stränglängden. Andra I/O-fel vid sparning (t.ex. ett destinationsflöde som inte kan skrivas till) visas som den underliggande .NET undantagstypen snarare än att vara inlindad i PsdSaveException.

Kommer fånga Exception också att fånga dessa två typer?

Ja, eftersom båda härstammar från System.Exception — men att fånga de specifika typerna låter dig särskilja laddningsfel från sparningsfel.

Se även

 Svenska