Kernuitzonderingen
Kernuitzonderingen
Aspose.PSD FOSS voor Python definieert twee type uitzonderingen die specifiek zijn voor PSD/PSB verwerking: PsdLoadException, opgegooid tijdens het parseren van een document, en PsdSaveException, opgegooid tijdens het schrijven ervan. Beide zijn afgeleid van de ingebouwde Exception en accepteren een bericht plus een optionele inner_exception.
Afvangen van Laadtijdfouten
PsdLoadException wordt opgegooid voor verschillende structurele validatiefouten tijdens het parseren van een document:
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
try:
image = PsdImage.load(input_path)
except PsdLoadException as ex:
print(f"Failed to load PSD/PSB file: {ex}")Veelvoorkomende berichten omvatten "Invalid PSD signature. Expected '8BPS' (0x38425053)." (het bestand begint niet met een PSD/PSB-handtekening), "Unsupported PSD version: {n}. ..." (het versieveld is noch PSD noch PSB), en "{section} length {n} exceeds the enclosing section boundary." (de verklaarde lengte van een sectie is niet consistent met de werkelijke grootte van het bestand).
Afvangen van Opslagtijdfouten
PsdSaveException heeft één opwerppunt in deze FOSS-build — een Pascal-string lengtescontrole:
from aspose_psd_foss.coreexceptions.psdsaveexception import PsdSaveException
try:
image.save(output_path)
except PsdSaveException as ex:
print(f"Failed to save PSD/PSB file: {ex}")Het bericht is "PSD Pascal string length {n} exceeds the supported maximum 255." — opgegooid wanneer een laag- of resource-naam groter is dan 255 bytes.
Inspecteren van een innerlijke uitzondering
Beide exceptietypen accepteren een inner_exception constructor-argument, dat wordt gevuld wanneer een onderliggende I/O-fout de uitzondering veroorzaakte:
try:
image = PsdImage.load(input_path)
except PsdLoadException as ex:
if ex.inner_exception is not None:
print(f"Underlying cause: {ex.inner_exception}")Het NotSupportedException-patroon
Verschillende property setters elders in de API gooien NotSupportedException in plaats van PsdLoadException/PsdSaveException — dit duidt op een eigenschap die opzettelijk alleen-lezen is in deze FOSS-build, geen parsing- of schrijffout. Zie Resources and Layers voor de specifieke getroffen eigenschappen.
Tips en best practices
- Vang
PsdLoadExceptionenPsdSaveExceptionspecifiek op in plaats van de basisExceptionwanneer je laad-fouten moet onderscheiden van opslaan-fouten. ArgumentNullException(opgegooid wanneerPsdImage.loadwordt aangeroepen met eenNonestream) enNotSupportedExceptionzijn afzonderlijke exceptietypen — geen varianten vanPsdLoadException/PsdSaveException.
Algemene problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
PsdLoadException over een niet-ondersteunde versie | Het versieveld van het bestand is noch de standaard PSD- noch PSB-waarde | Bevestig dat het bestand een echt, onbeschadigd PSD/PSB document is |
PsdSaveException over een Pascal-tekenreekslengte | Een laag- of resource-naam overschrijdt 255 bytes | Verkort de waarde voordat u opslaat |
FAQ
Hebben PsdLoadException en PsdSaveException een gemeenschappelijk basis-uitzonderingstype?
Nee — beide zijn direct afgeleid van de ingebouwde Exception, niet van elkaar of van een gedeelde Aspose.PSD basis-uitzonderingsklasse.
Zal het vangen van Exception ook deze twee types vangen?
Ja, omdat beide afgeleid zijn van Exception — maar het vangen van de specifieke types stelt je in staat om laad-fouten van opslaan-fouten te onderscheiden.
API Reference Samenvatting
| Klasse/Methode | Beschrijving |
|---|---|
PsdLoadException(message, inner_exception=None) | Opgetreden tijdens het parseren van het document |
PsdSaveException(message, inner_exception=None) | Opgetreden tijdens het schrijven van het document |
NotSupportedException(message, inner_exception=None) | Opgetreden door read-only-in-this-FOSS-build setters |