Các ngoại lệ cốt lõi

Các ngoại lệ cốt lõi

Các ngoại lệ cốt lõi

Thư viện báo cáo các lỗi tải và lưu thông qua hai kiểu ngoại lệ chuyên dụng: PsdLoadException và PsdSaveException, cả hai đều kế thừa lớp chuẩn Exception.


PsdLoadException

Bị ném khi Image.Load() / PsdImage.Load() không thể phân tích đầu vào thành tài liệu PSD hoặc PSB hợp lệ.

try
{
    using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}

PsdSaveException

Bị ném khi PsdImage.Save() không thể ghi tài liệu ra.

try
{
    image.Save(outputPath);
}
catch (PsdSaveException ex)
{
    Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}

Hàm khởi tạo

Cả hai kiểu ngoại lệ đều có cùng cấu trúc hai hàm khởi tạo: một hàm khởi tạo chỉ nhận thông điệp, và một hàm khởi tạo nhận thông điệp cộng với ngoại lệ bên trong để bao bọc lỗi cấp thấp hơn.

throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);

Mẹo và Thực hành Tốt nhất

  • Bắt PsdLoadException quanh mọi cuộc gọi Image.Load()/PsdImage.Load() xử lý đầu vào bên ngoài.
  • Bắt PsdSaveException quanh mọi cuộc gọi PsdImage.Save() nếu đích (đĩa, luồng) có thể không ghi được.
  • Cả hai kiểu đều kế thừa Exception, vì vậy một catch (Exception) bao quát hơn cũng bắt chúng — ưu tiên các kiểu cụ thể khi bạn muốn phân biệt lỗi tải và lỗi lưu.

Các vấn đề thường gặp

Vấn đềNguyên nhânCách khắc phục
PsdLoadException trên một tệp mà các công cụ khác mở bình thườngĐầu vào không phải là tài liệu PSD/PSB hợp lệ, hoặc sử dụng một tính năng mà bộ phân tích của bản dựng FOSS này không nhận raXác nhận tệp là tài liệu PSD/PSB thực sự; báo cáo các tính năng không được hỗ trợ riêng biệt so với các lỗi tải
PsdSaveException khi ghi vào luồngLuồng đích có thể không ghi được hoặc đã bị giải phóng.Xác nhận luồng đã mở và có thể ghi trước khi gọi Save()

FAQ

Thư viện này có tự động thử lại sau khi xảy ra lỗi tải hoặc lưu không?

Không. PsdLoadException và PsdSaveException chỉ được phát sinh một lần và phải được người gọi xử lý; không có việc thử lại tự động.

Tôi có thể kiểm tra nguyên nhân gốc của một ngoại lệ được bao bọc không?

Có, khi có cung cấp — cả hai hàm khởi tạo đều chấp nhận một tham số innerException, có thể truy cập thông qua thuộc tính chuẩn Exception.InnerException.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
PsdLoadException(message) / PsdLoadException(message, innerException)Bị ném khi không thể tải tài liệu
PsdSaveException(message) / PsdSaveException(message, innerException)Bị ném khi không thể lưu tài liệu

Xem thêm

 Tiếng Việt