核心异常

核心异常

Aspose.PSD FOSS for Python 定义了两种特定于 PSD/PSB 处理的异常类型:PsdLoadException(在解析文档时抛出),以及 PsdSaveException(在写入文档时抛出)。两者均继承自内置的 Exception,并接受一条消息以及可选的 inner_exception。


捕获加载时失败

PsdLoadException 在解析文档时因多种结构验证失败而被抛出:

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    print(f"Failed to load PSD/PSB file: {ex}")

常见信息包括 "Invalid PSD signature. Expected '8BPS' (0x38425053)."(文件未以 PSD/PSB 签名开头),"Unsupported PSD version: {n}. ..."(版本字段既不是 PSD 也不是 PSB),以及 "{section} length {n} exceeds the enclosing section boundary."(某节声明的长度与文件实际大小不一致)。


捕获保存时失败

PsdSaveException 在此 FOSS 构建中只有一个抛出位置——对 Pascal 字符串长度的检查:

from aspose_psd_foss.coreexceptions.psdsaveexception import PsdSaveException

try:
    image.save(output_path)
except PsdSaveException as ex:
    print(f"Failed to save PSD/PSB file: {ex}")

它的消息是 "PSD Pascal string length {n} exceeds the supported maximum 255." — 当图层或资源名称超过 255 字节时抛出。


检查内部异常

这两种异常类型都接受一个 inner_exception 构造函数参数,该参数会在底层 I/O 失败导致异常时被填充:

try:
    image = PsdImage.load(input_path)
except PsdLoadException as ex:
    if ex.inner_exception is not None:
        print(f"Underlying cause: {ex.inner_exception}")

NotSupportedException 模式

在 API 的其他位置,有多个属性设置器会抛出 NotSupportedException 而不是 PsdLoadException/PsdSaveException —— 这表明该属性在此 FOSS 构建中被有意设为只读,而非解析或写入错误。参见 Resources and Layers 查看受影响的具体属性。


提示与最佳实践

  • 在需要区分加载失败和保存失败时,请专门捕获 PsdLoadException 和 PsdSaveException,而不是基类 Exception。
  • ArgumentNullException(当 PsdImage.load 使用 None 流调用时抛出)和 NotSupportedException 是独立的异常类型 — 并非 PsdLoadException/PsdSaveException 的变体。

常见问题

问题原因修复
PsdLoadException 关于不受支持的版本文件的版本字段既不是标准的 PSD 也不是 PSB 值确认文件是一个真实且未损坏的 PSD/PSB 文档
PsdSaveException 关于 Pascal 字符串长度图层或资源名称超过 255 字节在保存之前请缩短该值

FAQ

PsdLoadException 和 PsdSaveException 是否共享一个公共的基异常类型?

不 — 两者直接派生自内置的 Exception,而不是相互之间或共享的 Aspose.PSD 基异常类。

捕获 Exception 是否也会捕获这两种类型?

是的,因为两者都派生自 Exception — 但捕获具体类型可以让你区分加载失败和保存失败。


API Reference 摘要

类/方法描述
PsdLoadException(message, inner_exception=None)在文档解析期间抛出
PsdSaveException(message, inner_exception=None)在文档编写期间抛出
NotSupportedException(message, inner_exception=None)由此 FOSS 构建中的只读设置器抛出

另请参阅

 中文