반응형
🚨 개발자라면 꼭 알아야 할 에러 코드 총정리
개발을 하다 보면 수없이 마주치는 에러 코드들, 한 번에 정리해 봤습니다!
이 글 하나로 주요 에러 코드를 빠르게 파악해 보세요. 🔍
📌 목차
- HTTP 상태 코드란?
- 1xx — 정보 응답
- 2xx — 성공
- 3xx — 리다이렉션
- 4xx — 클라이언트 에러
- 5xx — 서버 에러
- 프로그래밍 공통 에러
- 에러 해결 꿀팁
1. HTTP 상태 코드란?
웹에서 클라이언트(브라우저)와 서버가 통신할 때, 서버는 요청에 대한 처리 결과를 숫자 코드로 응답합니다. 이것이 바로 HTTP 상태 코드(Status Code) 입니다.
크게 5개 그룹으로 나뉘며, 첫 번째 숫자가 응답의 종류를 나타냅니다.
| 구분 | 의미 | 한 줄 요약 |
|---|---|---|
| 1xx | 정보 | 요청을 받았고, 처리 중이에요 |
| 2xx | 성공 | 요청이 정상 처리됐어요 ✅ |
| 3xx | 리다이렉션 | 다른 곳으로 이동이 필요해요 ↪️ |
| 4xx | 클라이언트 에러 | 요청에 문제가 있어요 ❌ |
| 5xx | 서버 에러 | 서버에 문제가 생겼어요 🔥 |
2. 🟢 1xx — 정보 응답 (Informational)
💡 "요청을 잘 받았으니 계속 진행하세요"라는 의미입니다.
| 코드 | 이름 | 설명 |
|---|---|---|
| 100 | Continue | 요청의 첫 부분을 받았으며, 나머지를 계속 보내도 됩니다 |
| 101 | Switching Protocols | 클라이언트가 요청한 프로토콜로 전환합니다 |
| 102 | Processing | 요청을 처리 중이지만 아직 완료되지 않았습니다 (WebDAV) |
📝 실무에서 1xx 코드를 직접 다루는 경우는 드뭅니다.
3. 🟢 2xx — 성공 (Success)
💡 개발자가 가장 보고 싶은 코드! "요청이 성공적으로 처리되었습니다."
| 코드 | 이름 | 설명 |
|---|---|---|
| 200 | OK | 요청이 정상적으로 처리되었습니다 |
| 201 | Created | 요청이 성공하여 새로운 리소스가 생성되었습니다 (POST 요청 등) |
| 202 | Accepted | 요청이 접수되었으나 아직 처리가 완료되지 않았습니다 |
| 204 | No Content | 요청은 성공했지만 응답 본문이 없습니다 (DELETE 요청 등) |
✏️ 실무 예시
GET /users/1 → 200 OK (유저 정보 반환)
POST /users → 201 Created (새 유저 생성)
DELETE /users/1 → 204 No Content (유저 삭제 완료)
4. 🟡 3xx — 리다이렉션 (Redirection)
💡 "요청한 리소스가 다른 곳에 있어요. 이쪽으로 가세요!"
| 코드 | 이름 | 설명 |
|---|---|---|
| 301 | Moved Permanently | 리소스가 영구적으로 새 URL로 이동했습니다 |
| 302 | Found | 리소스가 임시적으로 다른 URL에 있습니다 |
| 304 | Not Modified | 캐시된 버전을 그대로 사용해도 됩니다 (변경 없음) |
| 307 | Temporary Redirect | 임시 리다이렉트 (HTTP 메서드 유지) |
| 308 | Permanent Redirect | 영구 리다이렉트 (HTTP 메서드 유지) |
✏️ 301 vs 302 차이점
- 301: 검색엔진이 새 URL로 인덱스를 갱신합니다 → 도메인 변경 시 사용
- 302: 검색엔진이 기존 URL 인덱스를 유지합니다 → 임시 점검 페이지 등에 사용
5. 🔴 4xx — 클라이언트 에러 (Client Error)
💡 "요청하신 쪽에 문제가 있어요!" — 가장 자주 마주치는 에러 그룹입니다.
| 코드 | 이름 | 설명 |
|---|---|---|
| 400 | Bad Request | 요청 구문이 잘못되었습니다 (필수 파라미터 누락 등) |
| 401 | Unauthorized | 인증이 필요합니다 (로그인하지 않음) |
| 403 | Forbidden | 인증은 되었지만 접근 권한이 없습니다 |
| 404 | Not Found | 요청한 리소스를 찾을 수 없습니다 |
| 405 | Method Not Allowed | 허용되지 않은 HTTP 메서드입니다 |
| 408 | Request Timeout | 요청 시간이 초과되었습니다 |
| 409 | Conflict | 리소스 충돌이 발생했습니다 (중복 데이터 등) |
| 410 | Gone | 리소스가 영구적으로 삭제되었습니다 |
| 413 | Payload Too Large | 요청 본문이 서버 허용 크기를 초과했습니다 |
| 415 | Unsupported Media Type | 지원하지 않는 미디어 타입입니다 |
| 422 | Unprocessable Entity | 구문은 맞지만 의미상 처리할 수 없습니다 |
| 429 | Too Many Requests | 요청 횟수가 제한을 초과했습니다 (Rate Limit) |
✏️ 401 vs 403 헷갈리지 마세요!
| 401 Unauthorized | 403 Forbidden | |
|---|---|---|
| 인증 여부 | ❌ 인증 안 됨 | ✅ 인증 됨 |
| 의미 | "너 누구야?" | "너인 건 아는데, 권한이 없어!" |
| 해결 방법 | 로그인 / 토큰 발급 | 관리자에게 권한 요청 |
6. 🔴 5xx — 서버 에러 (Server Error)
💡 "서버에 문제가 생겼어요!" — 백엔드 개발자가 가장 긴장하는 코드입니다. 😱
| 코드 | 이름 | 설명 |
|---|---|---|
| 500 | Internal Server Error | 서버 내부에 알 수 없는 오류가 발생했습니다 |
| 501 | Not Implemented | 서버가 해당 기능을 지원하지 않습니다 |
| 502 | Bad Gateway | 게이트웨이/프록시가 잘못된 응답을 받았습니다 |
| 503 | Service Unavailable | 서버 과부하 또는 점검 중입니다 |
| 504 | Gateway Timeout | 게이트웨이/프록시 서버의 응답 시간이 초과되었습니다 |
✏️ 502 vs 504 차이점
- 502 Bad Gateway: 중간 서버가 백엔드로부터 잘못된 응답을 받음
- 504 Gateway Timeout: 중간 서버가 백엔드로부터 응답 자체를 받지 못함 (시간 초과)
7. 💻 프로그래밍 공통 에러
HTTP 코드 외에도 개발 시 자주 만나는 에러들을 정리했습니다.
| 에러 | 설명 | 자주 발생하는 상황 |
|---|---|---|
| NullPointerException | Null 객체에 접근 시도 | 초기화하지 않은 변수 사용 |
| StackOverflowError | 스택 메모리 초과 | 무한 재귀 호출 |
| OutOfMemoryError | 메모리 부족 | 대용량 데이터 처리, 메모리 누수 |
| IndexOutOfBoundsException | 인덱스 범위 초과 | 배열/리스트 크기 이상의 인덱스 접근 |
| FileNotFoundException | 파일을 찾을 수 없음 | 잘못된 파일 경로 지정 |
| SyntaxError | 구문 오류 | 오타, 괄호 누락, 세미콜론 빠짐 |
| TypeError | 잘못된 타입 사용 | 문자열과 숫자 연산 등 |
| ConnectionTimeoutError | 연결 시간 초과 | DB/API 서버 응답 지연 |
| PermissionError | 접근 권한 없음 | 파일/디렉토리 권한 부족 |
8. 💡 에러 해결 꿀팁
✅ 4xx 에러가 발생했다면 (클라이언트 문제)
- 🔗 URL이 정확한지 확인하세요
- 🔑 인증 토큰/세션이 유효한지 확인하세요
- 📋 요청 파라미터가 빠지지 않았는지 확인하세요
- 📦 Content-Type 헤더가 올바른지 확인하세요
✅ 5xx 에러가 발생했다면 (서버 문제)
- 📄 서버 로그를 가장 먼저 확인하세요
- 🔄 서버를 재시작해 보세요
- 💾 디스크 용량과 메모리 사용량을 점검하세요
- 🌐 외부 API/DB 연결 상태를 확인하세요
반응형
'웹 겉핥기.zip' 카테고리의 다른 글
| HTML 완전 기초 1단계 🚀 (0) | 2026.03.15 |
|---|