seong_hye, the developer

Swift) Error Code 본문

IOS

Swift) Error Code

seong_hye 2022. 10. 28.

 

 📘 Error Code

시스템, 네트워크, API, 앱 내부 등에서 발생한 오류의 종류를 숫자로 식별하기 위한 코드

상황에 따라 의미가 다르지만, 일반적으로 범주를 나눔


🔹 HTTP 에러 코드 (100~599)

가장 알려진 에러코드

네트워크 통신 (REST API)에서 사용됨

범위 의미 예시
1xx 정보 100: Continue
2xx 성공 200: OK, 201: Created
3xx 리다이렉트 301: Moved Permanently, 304: Not Modified
4xx 클라이언트 오류 400: Bad Request, 401: Unauthorized, 404: Not Found
5xx 서버 오류 500: Internal Server Error, 503: Service Unavailable

📌 서버와 클라이언트 간의 HTTP 응답 상태 코드를 나타냄


🔹 iOS 시스템 에러 코드 (Foundation / Cocoa)

NSError로 전달되는 에러에는 도메인(Domain)코드(Code)가 함께 나옴

 

➡️ NSURLErrorDomain

에러 코드 의미
-1001 요청 시간 초과 (Timed out)
-1009 인터넷 연결 안 됨 (Not connected to Internet)
-1004 서버 연결 실패 (Could not connect to server)
-1200 SSL 인증 오류
-999 요청 취소됨 (Canceled)

 

 


🔹 커스텀 앱 에러 코드

앱 내부에서 enum을 만들어서 직접 에러 코드와 메시지를 정의 가능

주로 API 실패 응답, 로컬 오류 분기 처리 등에 사용됨

enum MyAppError: Int, Error {
	case unknown = 1000
    case invalidInput = 1001
    case permissionDenied = 1002
}

🔹 POSIX / System 에러 코드 (UNIX 기반)

iOS 내부적으로도 사용하는 POSIX 에러 코드 존재

파일 처리나 시스템 호출 중에 발생함

에러 코드 의미
1 EPERM: 권한 없음
2 ENOENT: 파일 없음
13 EACCES: 접근 거부
22 EINVAL: 잘못된 인자

🔹에러 코드 디버깅 팁

🔍  NSError

- Domain: 에러의 범위 (ex. NSURLErrorDomain)

- code: 숫자 에러 코드

- userInfo: 에러 상세 정보

if let error = error as? URLError {
	print("에러 코드 : \(error.code.rawValue)")
}

🔹요약

종류 코드 범위 설명
HTTP 100 ~ 599 서버와의 통신 결과
iOS 시스템 (NSError) -1xx ~ -1xxx 네트워크 오류 등
커스텀 개발자 정의 앱 내부 로직
POSIX 1 ~ 255 시스템 파일 / 권한 오류

🔹참고

https://developer.apple.com/documentation/foundation/urlerror/code

 

URLError.Code | Apple Developer Documentation

There's never been a better time to develop for Apple platforms.

developer.apple.com

https://opensource.apple.com/source/xnu/xnu-4570.1.46/bsd/sys/errno.h.auto.html


Comments