Cum să gestionați excepțiile PSD Core în .NET
Aspose.PSD FOSS pentru .NET definește două tipuri de excepții: PsdLoadException, aruncată în timpul parsării unui document PSD/PSB, și PsdSaveException, aruncată în timpul scrierii unui document. Ambele derivă din System.Exception și suportă un constructor doar cu mesaj și un constructor cu mesaj și excepție internă.
Ghid pas cu pas
Pasul 1: Instalați pachetul
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildPasul 2: Importați clasele necesare
using Aspose.PSD.FileFormats.Psd;Pasul 3: Capturați erorile la încărcare
PsdLoadException este aruncat când structura unui document nu trece validarea — de exemplu, o versiune PSD/PSB neacceptată, o lungime a secțiunii care depășește limita declarată a secțiunii înconjurătoare, sau date de flux trunchiate:
try
{
using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load PSD/PSB file: {ex.Message}");
}Pasul 4: Capturați erorile de salvare
PsdSaveException este aruncat în timpul scrierii unui document — de exemplu, când o valoare de șir depășește lungimea pe care un câmp de șir Pascal PSD o poate reține:
try
{
image.Save("output.psd");
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save PSD/PSB file: {ex.Message}");
}Pasul 5: Inspectați o excepție internă
Ambele tipuri de excepții au un constructor care înfășoară o excepție internă (folosit intern, de exemplu, când o eroare I/O întrerupe citirea structurii fișierului). Verificați InnerException pentru cauza de bază:
try
{
using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex) when (ex.InnerException != null)
{
Console.WriteLine($"Underlying I/O error: {ex.InnerException.Message}");
}Probleme comune și remedieri
PsdLoadException cu un mesaj despre o versiune nesuportată. Câmpul de versiune PSD declarat al fișierului nu este nici versiunea standard PSD, nici valoarea PSB pentru documente mari. Confirmați că fișierul este un document PSD/PSB autentic, necorupt.
PsdLoadException cu un mesaj despre o lungime a secțiunii care depășește o limită. Câmpurile de lungime interne ale fișierului sunt inconsistente cu dimensiunea sa reală — aceasta indică de obicei un fișier trunchiat sau corupt, mai degrabă decât o variantă nesuportată.
PsdSaveException despre lungimea unui șir Pascal. O valoare de tip șir (cum ar fi numele unui strat sau al unei resurse) depășește 255 de octeți, limita maximă pe care o poate codifica un câmp de șir Pascal în PSD. Scurtați valoarea înainte de a salva.
Întrebări frecvente
Împărtășesc PsdLoadException și PsdSaveException un tip de excepție de bază comun?
Nu — ambele derivă direct din System.Exception, nu una din cealaltă sau dintr-o clasă de excepție de bază Aspose.PSD comună.
Poate PsdSaveException să apară din motive diferite de o valoare de șir lungă?
Locul confirmat al aruncării în această construcție FOSS este verificarea lungimii șirului Pascal. Alte erori I/O la salvare (de exemplu, un flux de destinație în care nu se poate scrie) apar ca tipul de excepție .NET de bază, în loc să fie învelite în PsdSaveException.
Va prinde Exception și aceste două tipuri?
Da, deoarece ambele derivă din System.Exception — dar prin capturarea tipurilor specifice poți distinge eșecurile de încărcare de cele de salvare.