예외¶
라이브러리가 발생시키는 예외입니다. 모두 KorailApiError를 상속합니다.
KorailApiError
¶
Bases: Exception
라이브러리가 발생시키는 모든 예외의 기반 클래스입니다.
except KorailApiError로 라이브러리 예외를 한꺼번에 처리할 수 있습니다. 라이브러리가 이 클래스 자체를 발생시키지는
않습니다. 아래 속성은 값이 없으면 None입니다.
KorailTransportError
¶
Bases: KorailApiError
네트워크 오류로 응답을 받지 못했거나, 서버가 2xx가 아닌 HTTP 상태로 응답했음을 나타냅니다.
리다이렉트는 따라가지 않으므로 3xx 응답도 이 예외가 됩니다. HTTP 상태 오류이면 raw에 응답 본문이 들어 있고,
네트워크 오류이면 원래의 httpx 예외가 __cause__에 들어 있습니다. 상태 변경 메서드에서 발생했다면 요청이 서버에
닿았는지 알 수 없으므로, 다시 호출하기 전에 예약 목록이나 승차권 목록으로 결과를 확인하세요.
KorailProtocolError
¶
Bases: KorailApiError
응답을 읽을 수 없거나 요청 전 입력 검사에 실패했음을 나타냅니다.
응답이 JSON 객체가 아니거나 필수 값이 없을 때, 닫힌 클라이언트로 요청하려 할 때도 발생합니다. 요청 전 입력 검사에서 발생했다면 요청은 보내지 않은 것입니다. 상태 변경 메서드가 응답을 읽지 못해 발생했다면 서버에서는 처리됐을 수 있으므로, 다시 호출하기 전에 결과를 확인하세요.
KorailAuthError
¶
Bases: KorailApiError
로그인에 실패했거나, 로그인이 필요한 메서드를 로그인하지 않고 호출했음을 나타냅니다.
로그인에 실패하면 code에 로그인 응답의 결과 코드가, raw에 로그인 응답 원본이 들어 있습니다. 로그인하지 않았거나
세션에 고객번호가 없어 요청 전에 발생한 경우에는 code와 raw가 None이며, 요청은 보내지 않은 것입니다.
KorailSessionExpiredError
¶
Bases: KorailAuthError
서버 세션이 만료됐음을 나타냅니다.
실패 응답의 결과 코드가 P058일 때 발생합니다. 클라이언트는 이 예외를 발생시키기 전에 로컬 세션을 비웁니다.
계속하려면 login을 다시 호출해 로그인하세요.
KorailDynaPathError
¶
Bases: KorailApiError
DynaPath 토큰을 붙이는 경로의 응답에서 차단 코드를 감지했음을 나타냅니다.
HTTP 상태와 봉투보다 먼저 판정하며, raw에 차단 코드가 든 응답이 들어 있습니다. 차단 코드가 들어 있는 응답 필드는
앱 내부 값이 공개돼 있지 않아 확인하지 못했습니다. 그래서 응답 최상위의 정수 값을 모두 검사하므로, 다른 필드의 같은
값도 차단으로 판정할 수 있습니다.
KorailAuthContinuationRequired
¶
Bases: KorailAuthError
로그인을 마치려면 휴면 계정 해제나 비밀번호 변경 같은 웹 단계가 필요함을 나타냅니다.
로그인 응답의 결과 코드가 WRC000116 또는 WRC000420일 때 발생합니다. redirect_url에 서버가 준 웹 주소(없으면
"")가, code와 raw에 결과 코드와 로그인 응답 원본이 들어 있습니다. 라이브러리는 웹 단계를 대신 진행하지
않습니다.
KorailAppError
¶
Bases: KorailApiError
서버가 실패로 응답했음을 나타냅니다.
결과 코드에 따라 하위 예외로 나뉘며, 어느 하위 예외에도 해당하지 않는 결과 코드는 이 클래스 그대로 발생합니다.
code와 message에 결과 코드와 결과 메시지가, raw에 응답 원본이 들어 있습니다.
KorailNoResultsError
¶
KorailNoDirectTrainError
¶
Bases: KorailNoResultsError
직통 열차가 없음을 나타냅니다(결과 코드 WRD000061).
환승 여정은 search_transfer_trains로 조회하세요. search_trains_with_transfer_fallback은 이 예외가 발생했을
때만 환승 여정을 조회합니다.
KorailSoldOutError
¶
KorailSeatUnavailableError
¶
KorailReservationRefusedError
¶
KorailReservationRefusedError(
code: str | None,
message: str | None,
*,
raw: object | None = None,
)
Bases: KorailAppError
중복 예약, 구매 한도, 예약 가능 시간 등의 이유로 예약이 거절됐음을 나타냅니다.
결과 코드 WRR800029, ERR911531 등에서 발생합니다.
KorailInvalidRequestError
¶
KorailNotEntitledError
¶
KorailServiceUnavailableError
¶
KorailServiceUnavailableError(
code: str | None,
message: str | None,
*,
raw: object | None = None,
)
Bases: KorailAppError
서비스나 연결을 이용할 수 없다는 안내 응답을 나타냅니다(결과 코드 SEMGTK).
서버 장애만을 뜻하지는 않습니다. 로그인 응답이 이 결과 코드이면 KorailAuthError 대신 이 예외가 발생합니다.
KorailAppUpdateRequiredError
¶
KorailAppUpdateRequiredError(
code: str | None,
message: str | None,
*,
raw: object | None = None,
)
Bases: KorailAppError
앱 업데이트를 요구하는 응답을 나타냅니다(결과 코드 SUPDATE).
로그인 응답이 이 결과 코드이면 KorailAuthError 대신 이 예외가 발생합니다.
KorailNetFunnelError
¶
Bases: KorailApiError
대기열을 통과하지 못해 API 요청을 보내지 않았음을 나타냅니다.
대기열 서버가 입장 키 없이 기다리라고 답했을 때, reserve·pay·reservation_view 관문에서 대기열 서버가
통과(200)로 답하지 않거나 대기열 서버 오류가 났을 때, 누적 대기 시간이 netfunnel_wait_limit를 넘었을 때
발생합니다. 대기열 응답으로 판정한 경우에는 code에 대기열 응답 코드가, raw에 대기열 응답이 들어 있습니다.
대기열 서버 오류로 요청을 보내지 않은 경우에는 code와 raw가 None이고 원래 예외가 __cause__에 들어
있습니다.
KorailQueueRejectedError
¶
Bases: KorailNetFunnelError
대기열 서버가 요청을 차단했음을 나타냅니다(대기열 응답 코드 301, 302).
모든 관문에서 발생하며, API 요청은 보내지 않은 것입니다. code에 대기열 응답 코드가, raw에 대기열 응답이 들어
있습니다.
KorailDynaPathRequiredError
¶
Bases: KorailApiError
DynaPath를 끈 설정으로 토큰이 필요한 요청(로그인)을 보내려 했음을 나타냅니다.
요청은 보내지 않습니다. 서버 응답의 차단 신호를 나타내는 KorailDynaPathError와 달리, 이 예외는 서버 응답을 받았다는
뜻이 아닙니다. 로그인하려면 DynaPath를 켠 설정(기본값)을 쓰세요.