Cara Menangani Pengecualian PSD Core di .NET

Cara Menangani Pengecualian PSD Core di .NET

Aspose.PSD FOSS untuk .NET mendefinisikan dua tipe pengecualian: PsdLoadException, yang dilempar saat mem-parsing dokumen PSD/PSB, dan PsdSaveException, yang dilempar saat menulisnya. Keduanya diturunkan dari System.Exception dan mendukung konstruktor hanya pesan serta konstruktor pesan-dengan-pengecualian-internal.

Panduan Langkah demi Langkah

Langkah 1: Instal Paket

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

Langkah 2: Impor Kelas yang Diperlukan

using Aspose.PSD.FileFormats.Psd;

Langkah 3: Tangkap Kegagalan Saat Memuat

PsdLoadException dilempar ketika struktur dokumen gagal validasi — misalnya, versi PSD/PSB yang tidak didukung, panjang bagian yang melebihi batas yang dinyatakan pada bagian yang melingkupi, atau data aliran yang terpotong:

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

Langkah 4: Tangkap Kegagalan Saat Menyimpan

PsdSaveException dilempar saat menulis dokumen — misalnya, ketika nilai string melebihi panjang yang dapat ditampung oleh bidang string Pascal PSD:

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

Langkah 5: Periksa Pengecualian Internal

Kedua tipe pengecualian memiliki konstruktor yang membungkus pengecualian internal (digunakan secara internal, misalnya, ketika kesalahan I/O menginterupsi pembacaan struktur file). Periksa InnerException untuk penyebab dasar:

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

Masalah Umum dan Solusi

PsdLoadException dengan pesan tentang versi yang tidak didukung. Field versi PSD yang dideklarasikan dalam file bukan nilai standar PSD maupun nilai PSB untuk dokumen besar. Pastikan file tersebut adalah dokumen PSD/PSB yang asli dan tidak rusak.

PsdLoadException dengan pesan tentang panjang bagian yang melebihi batas. Field panjang internal file tidak konsisten dengan ukuran sebenarnya — ini biasanya menunjukkan file yang terpotong atau rusak, bukan varian yang tidak didukung.

PsdSaveException tentang panjang string Pascal. Nilai string (seperti nama lapisan atau sumber daya) melebihi 255 byte, maksimum yang dapat dienkode oleh field string Pascal PSD. Perpendek nilai tersebut sebelum menyimpan.

Pertanyaan yang Sering Diajukan

Apakah PsdLoadException dan PsdSaveException berbagi tipe exception dasar yang sama?

Tidak — keduanya diturunkan langsung dari System.Exception, bukan dari satu sama lain atau kelas exception dasar Aspose.PSD yang sama.

Apakah PsdSaveException dapat terjadi karena alasan selain nilai string yang panjang?

Situs lemparan yang terkonfirmasi dalam build FOSS ini adalah pemeriksaan panjang string Pascal. Kegagalan I/O saat penyimpanan lainnya (misalnya, aliran tujuan yang tidak dapat ditulisi) muncul sebagai tipe exception .NET yang mendasari alih-alih dibungkus dalam PsdSaveException.

Apakah menangkap Exception juga akan menangkap dua tipe ini?

Ya, karena keduanya diturunkan dari System.Exception — tetapi menangkap tipe spesifik memungkinkan Anda membedakan kegagalan pemuatan dari kegagalan penyimpanan.

Lihat Juga

 Bahasa Indonesia