Python 의 URLError 이상 을 처리 하 는 방법
우선 URLError 가 발생 할 수 있 는 원인 을 설명 합 니 다.
import urllib2
requset = urllib2.Request('http://www.xxxxx.com')
try:
urllib2.urlopen(requset)
except urllib2.URLError, e:
print e.reason
우 리 는 urlopen 방법 을 이용 하여 존재 하지 않 는 사이트 주 소 를 방 문 했 습 니 다. 실행 결 과 는 다음 과 같 습 니 다.
[Errno 11004] getaddrinfo failed
오류 코드 가 11004 라 는 것 을 설명 합 니 다. 오류 원인 은 getaddrinfo failed 입 니 다.
2.HTTPError
HTTP Error 는 URLError 의 하위 클래스 입 니 다. urlopen 방법 으로 요청 을 할 때 서버 에 응답 대상 response 에 대응 합 니 다. 그 중에서 숫자 '상태 코드' 를 포함 합 니 다.예 를 들 어 response 가 '방향 바 꾸 기' 라면 다른 주소 로 문 서 를 가 져 와 야 합 니 다. urllib 2 는 이 를 처리 합 니 다.
다른 처리 할 수 없 는 urlopen 은 HTTP 오류 가 발생 합 니 다. 해당 상태 에 대응 합 니까? HTTP 상태 코드 는 HTTP 프로 토 콜 이 되 돌아 오 는 응답 상 태 를 표시 합 니 다.다음은 상태 코드 를 다음 과 같이 요약 합 니 다.
HTTPError 인 스 턴 스 가 발생 하면 code 속성 이 있 습 니 다. 이것 이 바로 서버 에서 보 낸 오류 번호 입 니 다.urllib 2 는 방향 을 바 꿀 수 있 습 니 다. 즉, 3 으로 시작 하 는 번 호 는 처리 할 수 있 고 100 - 299 범위 의 번 호 는 성공 적 으로 표시 되 기 때문에 400 - 599 의 오류 번호 만 볼 수 있 습 니 다.
다음은 예 를 들 어 캡 처 한 이상 은 HTTPError 입 니 다. code 속성 을 가지 고 있 습 니 다. 바로 오류 코드 입 니 다. 또한 reason 속성 을 인쇄 했 습 니 다. 이것 은 부모 클래스 URLError 의 속성 입 니 다.
import urllib2
req = urllib2.Request('http://blog.csdn.net/cqcre')
try:
urllib2.urlopen(req)
except urllib2.HTTPError, e:
print e.code
print e.reason
실행 결 과 는 다음 과 같다.
403
Forbidden
오류 코드 는 403 입 니 다. 오류 원인 은 Forbidden 입 니 다. 서버 접근 이 금지 되 어 있 음 을 설명 합 니 다.
HTTPError 의 부모 클래스 는 URLError 라 는 것 을 알 고 있 습 니 다. 프로 그래 밍 경험 에 따 르 면 부모 클래스 의 이상 은 하위 클래스 이상 뒤에 써 야 합 니 다. 하위 클래스 가 캡 처 되 지 않 으 면 부모 클래스 의 이상 을 캡 처 할 수 있 기 때문에 상기 코드 는 이렇게 고 칠 수 있 습 니 다.
import urllib2
req = urllib2.Request('http://blog.csdn.net/cqcre')
try:
urllib2.urlopen(req)
except urllib2.HTTPError, e:
print e.code
except urllib2.URLError, e:
print e.reason
else:
print "OK"
HTTPError 가 포착 되면 출력 code 는 URLError 이상 을 처리 하지 않 습 니 다.HTTP 오류 가 발생 하지 않 으 면 URLError 이상, 출력 오류 원인 을 캡 처 합 니 다.
또한 hasattr 속성 을 추가 하여 속성 을 미리 판단 할 수 있 습 니 다. 코드 는 다음 과 같 습 니 다.
import urllib2
req = urllib2.Request('http://blog.csdn.net/cqcre')
try:
urllib2.urlopen(req)
except urllib2.URLError, e:
if hasattr(e,"code"):
print e.code
if hasattr(e,"reason"):
print e.reason
else:
print "OK"
우선 이상 한 속성 을 판단 하여 속성 출력 오류 가 발생 하지 않도록 한다.
이상 은 URLError 와 HTTPError 에 대한 소개 와 그 에 따 른 오류 처리 방법 입 니 다. 여러분 화 이 팅!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.