Pengecualian Inti
Pengecualian Inti
Perpustakaan melaporkan kegagalan memuat dan menyimpan melalui dua tipe pengecualian khusus: PsdLoadException dan PsdSaveException, keduanya memperluas kelas standar Exception.
PsdLoadException
Dilemparkan ketika Image.Load() / PsdImage.Load() tidak dapat mengurai masukan sebagai dokumen PSD atau PSB yang valid.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
Dilemparkan ketika PsdImage.Save() tidak dapat menulis dokumen keluar.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}Konstruktor
Kedua tipe pengecualian memiliki bentuk dua konstruktor yang sama: konstruktor hanya pesan, dan konstruktor pesan-dengan-pengecualian-internal untuk membungkus kegagalan tingkat lebih rendah.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);Tips dan Praktik Terbaik
- Tangkap
PsdLoadExceptiondi sekitar setiap pemanggilanImage.Load()/PsdImage.Load()yang memproses input eksternal. - Tangkap
PsdSaveExceptiondi sekitar setiap pemanggilanPsdImage.Save()jika tujuan (disk, aliran) mungkin tidak dapat ditulisi. - Kedua tipe memperluas
Exception, sehinggacatch (Exception)yang lebih umum juga menangkapnya — pilih tipe spesifik ketika Anda ingin membedakan kegagalan pemuatan dari kegagalan penyimpanan.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
PsdLoadException pada file yang dapat dibuka dengan baik di alat lain | Masukan bukan dokumen PSD/PSB yang valid, atau menggunakan fitur yang tidak dikenali oleh parser build FOSS ini | Pastikan file tersebut merupakan dokumen PSD/PSB yang asli; laporkan fitur yang tidak didukung secara terpisah dari kegagalan pemuatan |
PsdSaveException saat menulis ke aliran | Aliran tujuan mungkin tidak dapat ditulis atau mungkin sudah dibuang | Pastikan aliran terbuka dan dapat ditulis sebelum memanggil Save() |
FAQ
Apakah perpustakaan ini secara otomatis mencoba kembali setelah kegagalan memuat atau menyimpan?
Tidak. PsdLoadException dan PsdSaveException dilempar sekali dan harus ditangani oleh pemanggil; tidak ada percobaan ulang otomatis.
Bisakah saya memeriksa penyebab asli dari pengecualian yang dibungkus?
Ya, bila disediakan — kedua konstruktor menerima parameter innerException, dapat diakses melalui properti standar Exception.InnerException.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | Dilempar ketika dokumen tidak dapat dimuat |
PsdSaveException(message) / PsdSaveException(message, innerException) | Dilempar ketika dokumen tidak dapat disimpan |