Excepții de bază
Excepții de bază
Biblioteca raportează eșecurile de încărcare și salvare prin două tipuri de excepții dedicate: PsdLoadException și PsdSaveException, ambele extinzând clasa standard Exception.
PsdLoadException
Aruncată când Image.Load() / PsdImage.Load() nu pot analiza intrarea ca un document PSD sau PSB valid.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Aruncată când PsdImage.Save() nu poate scrie documentul.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Constructori
Ambele tipuri de excepții au aceeași structură cu doi constructori: un constructor doar cu mesaj și un constructor cu mesaj și excepție internă pentru a înfășura o eroare de nivel inferior.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Sfaturi și bune practici
- Capturaţi
PsdLoadExceptionîn jurul fiecărui apelImage.Load()/PsdImage.Load()care procesează intrări externe. - Capturaţi
PsdSaveExceptionîn jurul fiecărui apelPsdImage.Save()dacă destinaţia (disc, flux) ar putea să nu fie scriabilă. - Ambele tipuri extind
Exception, astfel încât uncatch (Exception)mai larg le prinde și pe acestea — preferaţi tipurile specifice când doriţi să distingeţi eșecurile de încărcare de cele de salvare.
Probleme comune
| Problemă | Cauză | Remediere |
|---|---|---|
PsdLoadException pe un fișier care se deschide corect în alte instrumente | Intrarea nu este un document PSD/PSB valid sau folosește o funcționalitate pe care parserul acestei construcții FOSS nu o recunoaște | Confirmă că fișierul este un document PSD/PSB autentic; raportează funcționalitățile neacceptate separat de erorile de încărcare |
PsdSaveException la scrierea într-un flux | Fluxul de destinație poate să nu fie scriabil sau să fi fost deja eliberat | Confirmaţi că fluxul este deschis şi scriabil înainte de a apela Save() |
FAQ
Această bibliotecă reîncearcă automat după un eșec la încărcare sau salvare?
Nu. PsdLoadException și PsdSaveException sunt ridicate o singură dată și trebuie gestionate de către apelant; nu există o reîncercare automată.
Pot să inspectez cauza originală a unei excepții învelite?
Da, când este furnizat — ambii constructori acceptă un parametru innerException, accesibil prin proprietatea standard Exception.InnerException.
API Reference Rezumat
| Clasă/Metodă | Descriere: |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Aruncat când un document nu poate fi încărcat |
PsdSaveException(message) / PsdSaveException(message, innerException) | Aruncat când un document nu poate fi salvat |