오류 처리
next-nexus는 모든 내부 및 네트워크 관련 오류를 커스텀 NexusError 객체로 정규화합니다. 이 객체는 디버깅과 오류 처리를 쉽게 하기 위한 구조화된 정보를 제공합니다.
NexusError 객체
NexusError 객체는 다음과 같은 핵심 프로퍼티를 가집니다:
code: 오류 타입을 식별하는 문자열 enum (예:NETWORK_ERROR,TIMEOUT_ERROR).message: 사람이 읽을 수 있는 오류 설명.response?: 서버로부터 응답을 받은 후 오류가 발생한 경우, 응답 상세 정보를 포함하는 선택적 객체.response.status: HTTP 상태 코드.response.data: 파싱된 응답 본문 (사용 가능한 경우).response.headers: 응답 헤더.
config?: 요청에 사용된definition및 설정.
isNexusError 타입 가드
try...catch 블록에서 NexusError를 안전하게 식별하려면 isNexusError 타입 가드를 사용하세요.
Import
import { isNexusError } from "next-nexus/errors";사용 패턴
try {
const res = await nexus(def);
} catch (e) {
if (isNexusError(e)) {
// 이제 NexusError 프로퍼티에 안전하게 접근할 수 있습니다.
console.error('Nexus 오류 코드:', e.code);
console.error('HTTP 상태:', e.response?.status);
console.error('응답 데이터:', e.response?.data);
} else {
// next-nexus에서 발생하지 않은 알 수 없는 오류
console.error('알 수 없는 오류', e);
}
}주요 오류 코드
마주칠 수 있는 주요 오류 코드의 일부입니다.
네트워크 및 요청 문제
NETWORK_ERROR: 네트워크 문제(예: DNS, 인터넷 없음)로 요청이 실패했습니다.TIMEOUT_ERROR:timeout제한을 초과하여 요청이 중단되었습니다.CANCELED_ERROR: 요청이 수동으로 취소되었습니다.INVALID_URL_ERROR:baseURL과endpoint로 조합된 URL이 유효하지 않습니다.
HTTP 응답 오류 (4xx-5xx)
BAD_REQUEST_ERROR(400)UNAUTHORIZED_ERROR(401)FORBIDDEN_ERROR(403)NOT_FOUND_ERROR(404)RATE_LIMITED_ERROR(429)SERVER_ERROR(5xx)BAD_RESPONSE_ERROR: 응답을 파싱할 수 없거나 형식이 잘못되었습니다.
설정 및 캐시 오류
INVALID_DEFINITION_ERROR:definition객체에 필수 필드가 없거나 값이 유효하지 않습니다.CACHE_KEY_GENERATION_ERROR:definition에서 안정적인 캐시 키를 생성하는 데 실패했습니다.CACHE_STORAGE_ERROR: 캐시에 쓰기를 시도하는 동안 오류가 발생했습니다.
함께 보기