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 apel Image.Load()/PsdImage.Load() care procesează intrări externe.
  • Capturaţi PsdSaveException în jurul fiecărui apel PsdImage.Save() dacă destinaţia (disc, flux) ar putea să nu fie scriabilă.
  • Ambele tipuri extind Exception, astfel încât un catch (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 instrumenteIntrarea nu este un document PSD/PSB valid sau folosește o funcționalitate pe care parserul acestei construcții FOSS nu o recunoașteConfirmă 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 fluxFluxul de destinație poate să nu fie scriabil sau să fi fost deja eliberatConfirmaţ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

Vezi și:

 Română