핵심 예외
핵심 예외
이 라이브러리는 로드 및 저장 실패를 두 개의 전용 예외 유형인 PsdLoadException와 PsdSaveException을 통해 보고하며, 두 예외 모두 표준 Exception 클래스를 상속합니다.
PsdLoadException
Image.Load() / PsdImage.Load()이 입력을 유효한 PSD 또는 PSB 문서로 구문 분석할 수 없을 경우 발생합니다.
try
{
using var image = (PsdImage)Image.Load(inputPath);
}
catch (PsdLoadException ex)
{
Console.WriteLine($"Failed to load {inputPath}: {ex.Message}");
}PsdSaveException
PsdImage.Save()이 문서를 기록할 수 없을 경우 발생합니다.
try
{
image.Save(outputPath);
}
catch (PsdSaveException ex)
{
Console.WriteLine($"Failed to save {outputPath}: {ex.Message}");
}생성자
두 예외 유형은 동일한 두 개의 생성자 형태를 가집니다: 메시지만 전달하는 생성자와, 하위 수준 오류를 래핑하기 위한 메시지와 내부 예외를 함께 받는 생성자입니다.
throw new PsdLoadException("Unexpected end of stream while reading the PSD header.");
throw new PsdSaveException("Failed to write layer data.", innerException);팁 및 모범 사례
- 외부 입력을 처리하는 모든
Image.Load()/PsdImage.Load()호출 주변에PsdLoadException를 잡아 주세요. - 대상(디스크, 스트림)이 쓰기 불가능할 수 있는 경우, 모든
PsdImage.Save()호출 주변에PsdSaveException를 잡아 주세요. - 두 유형 모두
Exception를 상속하므로, 더 포괄적인catch (Exception)도 이를 잡을 수 있습니다 — 로드 실패와 저장 실패를 구분하고 싶을 때는 구체적인 유형을 사용하는 것이 좋습니다.
일반적인 문제
| 문제 | 원인 | 해결 방법 |
|---|---|---|
다른 도구에서는 정상적으로 열리는 파일에 대한 PsdLoadException | 입력이 유효한 PSD/PSB 문서가 아니거나, 이 FOSS 빌드 파서가 인식하지 못하는 기능을 사용하고 있습니다 | 파일이 실제 PSD/PSB 문서인지 확인하십시오; 지원되지 않는 기능은 로드 실패와 별도로 보고하십시오 |
스트림에 쓰는 중 PsdSaveException | 대상 스트림이 쓰기 가능하지 않거나 이미 해제되었을 수 있습니다 | 스트림이 열려 있고 쓰기 가능한지 확인한 후 Save()을(를) 호출하십시오. |
FAQ
이 라이브러리는 로드 또는 저장 실패 후 자동으로 재시도합니까?
아니요. PsdLoadException와 PsdSaveException은 한 번만 발생하며 호출자가 처리해야 합니다; 자동 재시도는 제공되지 않습니다.
래핑된 예외의 원인을 검사할 수 있나요?
예, 제공되는 경우에만 — 두 생성자는 innerException 매개변수를 받아들이며, 표준 Exception.InnerException 속성을 통해 접근할 수 있습니다.
API Reference 요약
| 클래스/메서드 | 설명 |
|---|---|
PsdLoadException(message) / PsdLoadException(message, innerException) | 문서를 로드하지 못했을 경우 발생합니다. |
PsdSaveException(message) / PsdSaveException(message, innerException) | 문서를 저장하지 못했을 경우 발생합니다. |