Python3.6 的 ecxept 语法是怎么样的,为什么我这样写遇到异常网页时都不输出下面的 print?

2018-07-17 20:55:08 +08:00
 h19981126g
示例:(之前时没有写 as e 的,但结果都是一样不输出)
try:
r = requests.get(url, headers=headers)
except requests.exceptions.ConnectionError as e:
print(e, url)
time.sleep(1)
except requests.exceptions.ChunkedEncodingError as e:
print(e, url)
time.sleep(1)
2413 次点击
所在节点    Python
16 条回复
matsuz
2018-07-17 21:02:19 +08:00
说明抛出的不是这两种异常
lhx2008
2018-07-17 21:24:43 +08:00
你改成捕捉所有异常看看不就好了?
qsnow6
2018-07-18 11:51:56 +08:00
没捕获到你指定类型的异常
JCZ2MkKb5S8ZX9pq
2018-07-18 13:53:43 +08:00
如果我没记错的话,没连上是返回 None 还是啥吧。
又或者是 r 的某一种状态,比如 r.code==403 之类的?
也就是说 try 的内容成功了,不会走到 except 吧?要么你换 except Exception 看看。
h19981126g
2018-07-18 22:01:33 +08:00
@matsuz 不是这个问题好吧,直接 except:都是一样的结果
h19981126g
2018-07-18 22:01:52 +08:00
@lhx2008 试过了,一样
h19981126g
2018-07-18 22:02:02 +08:00
@qsnow6 试过了,一样
h19981126g
2018-07-18 22:02:40 +08:00
@JCZ2MkKb5S8ZX9pq 请问大致可以怎么写呢?
lhx2008
2018-07-18 22:05:55 +08:00
@h19981126g 那就没有抛异常,或者不是在这个位置抛出的。
JCZ2MkKb5S8ZX9pq
2018-07-19 00:38:52 +08:00
我只有大概印象哦
r = requests(url)
if r.code == 200:
print('ok')
else:
print('error', url)
JCZ2MkKb5S8ZX9pq
2018-07-19 00:40:42 +08:00
具体建议去看下 requests 的文档,不长的。
h19981126g
2018-07-19 20:57:50 +08:00
@JCZ2MkKb5S8ZX9pq 好的呢
h19981126g
2018-07-19 21:27:25 +08:00
@JCZ2MkKb5S8ZX9pq 是 r.status_code
wonderay
2018-07-20 14:26:35 +08:00
resp = requests.get(url)
if not resp.ok:
print(url, resp.reason)
JCZ2MkKb5S8ZX9pq
2018-07-20 17:10:57 +08:00
我看了下,好像超时未响应是会出错的,那你就加一个 except Exception 好了。
h19981126g
2018-07-20 21:23:39 +08:00
@JCZ2MkKb5S8ZX9pq ok,回头试试看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/471760

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX