핵심 예외
핵심 예외
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 빌드에서 단 하나의 발생 지점을 가지고 있습니다 — 파스칼 문자열 길이 검사:
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 영향을 받는 특정 속성에 대해.
팁 및 모범 사례
- 로드 실패와 저장 실패를 구분해야 할 때 기본
Exception대신PsdLoadException와PsdSaveException을 명시적으로 잡으세요. 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) | read-only-in-this-FOSS-build 설정자에 의해 발생 |