我试图在我的Python项目上阅读WWW-site。但是,如果我无法连接到Internet,代码将崩溃。如果在阅读网站的某些时候没有连接,如何捕获异常?
import sys
import time
import urllib3
# Gets the weather from foreca.fi.
def get_weather(url):
http = urllib3.PoolManager()
r = http.request('GET', url)
return (r.data)
time = time.strftime("%Y%m%d")
url = "http://www.foreca.fi/Finland/Kuopio/Saaristokaupunki/details/" + time
weather_all = get_weather(url)
print(weather_all)
答案 0 :(得分:1)
如果没有到指定服务器的路由(即互联网连接丢失),我认为urllib3会throw
URLError
例外,所以也许你可以使用简单的try catch
?我对urllib3并不是特别精通,但是对于urllib来说,它会是这样的:
E.g。
try:
weather_all = get_weather(url)
except urllib.error.URLError as e:
print "No connection to host"
答案 1 :(得分:1)
我测试了你的代码没有连接,如果它没有连接它会引发MaxRetryError(“当超过最大重试次数时引发。”)所以你可以处理类似的异常:
try:
# Your code here
except urllib3.exceptions.MaxRetryError:
# handle the exception here
您可以做的另一件事是使用超时并在超时时执行一些特殊操作,以便您有额外的控制权。从某种意义上说,它告诉你的异常是什么,它达到了最大值
另外,请考虑使用requests library。