Hoe PSD Core-excepties te behandelen in .NET

Hoe PSD Core-excepties te behandelen in .NET

Aspose.PSD FOSS voor .NET definieert twee exceptietypen: PsdLoadException, opgeworpen tijdens het parseren van een PSD/PSB document, en PsdSaveException, opgeworpen tijdens het schrijven ervan. Beide zijn afgeleid van System.Exception en ondersteunen een constructor met alleen een bericht en een constructor met een bericht plus een inner-exceptie.

Stapsgewijze handleiding

Stap 1: Installeer het pakket

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

Stap 2: Importeer de vereiste klassen

using Aspose.PSD.FileFormats.Psd;

Stap 3: Vang laadtijdfouten op

PsdLoadException wordt gegooid wanneer de structuur van een document niet voldoet aan de validatie — bijvoorbeeld een niet-ondersteunde PSD/PSB-versie, een sectielengte die de gedeclareerde grens van de omvattende sectie overschrijdt, of afgekapt stream-gegevens:

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

Stap 4: Vang Opslag-tijd Fouten

PsdSaveException wordt gegooid tijdens het schrijven van een document — bijvoorbeeld wanneer een tekenreekswaarde de lengte overschrijdt die een PSD Pascal-tekenreeksveld kan bevatten:

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

Stap 5: Inspecteer een Inner Exception

Beide exceptietypen hebben een constructor die een inner exception omsluit (intern gebruikt, bijvoorbeeld wanneer een I/O-fout het lezen van de bestandsstructuur onderbreekt). Controleer InnerException voor de onderliggende oorzaak:

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

Veelvoorkomende problemen en oplossingen

PsdLoadException met een bericht over een niet-ondersteunde versie. Het door het bestand opgegeven PSD-versieveld is noch de standaard-PSD, noch de grote-document-PSB-waarde. Controleer of het bestand een echt, onbeschadigd PSD/PSB document is.

PsdLoadException met een bericht over een sectielengte die een grens overschrijdt. De interne lengtevvelden van het bestand komen niet overeen met de werkelijke grootte — dit duidt meestal op een ingekorte of beschadigde file in plaats van een niet-ondersteunde variant.

PsdSaveException over een Pascal-stringlengte. Een tekenreekswaarde (bijvoorbeeld een laag- of resource-naam) overschrijdt 255bytes, het maximum dat een PSD-Pascal-stringveld kan coderen. Verkort de waarde voordat u opslaat.

Veelgestelde vragen

Hebben PsdLoadException en PsdSaveException een gemeenschappelijk basistype voor uitzonderingen?

Nee — beide erven direct van System.Exception, niet van elkaar of van een gedeelde Aspose.PSD basisklasse voor uitzonderingen.

Kan PsdSaveException zich voordoen om andere redenen dan een lange tekenreekswaarde?

De bevestigde plek waar de uitzondering wordt gegooid in deze FOSS-build is de controle op de Pascal-stringlengte. Andere I/O-fouten tijdens het opslaan (bijvoorbeeld een bestemmingsstream waar niet naar geschreven kan worden) verschijnen als het onderliggende .NET-uitzonderingstype in plaats van gewrapt te worden in PsdSaveException.

Zal het opvangen van Exception ook deze twee typen vangen?

Ja, aangezien beide afstammen van System.Exception — maar het opvangen van de specifieke types laat je onderscheid maken tussen laadfouten en opslaanfouten.

Zie ook

 Nederlands