Cum să gestionați excepțiile PSD Core în .NET

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 build

Pasul 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.

Vezi și:

 Română