请教如何处理 Python 中的异常以保证脚本能够长时间运行

2018-04-27 15:25:02 +08:00
 hackpro

现在的代码类似于:

def some_func():
	...


if __name__ == "__main__":
	while True:
	    try:
        	some_func()
            except Exception as e:
        	pass

但是 PyCharm 中运行还是会抛异常导致程序 Crash

请教小伙伴这段代码有什么问题吗

另外应该如何更好地保证代码长时间运行不 Crash 的问题 谢谢

1785 次点击
所在节点    问与答
12 条回复
alvin666
2018-04-27 16:22:04 +08:00
把代码全放上来看看,是哪里出错了?
hackpro
2018-04-27 16:36:57 +08:00
@alvin666 #1 这个 some_func() 里面就是 get post 数据
本意是如果出现问题 就忽略掉

但是现在报了 HTTPSConnectionPool Exception 并且 Crash 了
Max tries exceeded with url: (Caused by SSLError(SSLError("bad handshake syscallerror(-1, "Unexpected EOF")")))
ipwx
2018-04-27 16:52:41 +08:00
Only one note: https://docs.python.org/3/library/exceptions.html#exception-hierarchy

May not be helpful for your problem.
ipwx
2018-04-27 16:57:22 +08:00
顺便 Python 里面一个 tab 等于 8 个空格。如果你空格 和 tab 混用,小心被坑。
zhouxuchen
2018-04-27 16:59:06 +08:00
@ipwx #4 眼尖的,我看了下还真是,LZ 这个编码习惯不好
hackpro
2018-04-27 17:01:16 +08:00
@ipwx #3 感谢回复
1. 意思是如何我 capture BaseException 能捕捉所有类型 Exception, 只抓 Exception 会 miss 掉一部分?
2. 通常我是只用 tab 不过 Python 缩进的话 4 个空格就够了吧……
hackpro
2018-04-27 17:02:09 +08:00
@zhouxuchen #5 这个代码在 V2 里我是手动敲的 因为缩进不太好弄
wisej
2018-04-27 17:10:16 +08:00
@hackpro 支持 markdown 的代码格式的,在 ide 里写好复制一下就好了
ipwx
2018-04-27 17:56:12 +08:00
@hackpro 一般大家都用 4 个空格缩进。Google 用 2 个。空格 tab 混用的风险在于,大部分编辑器会显示成 4 个空格,但是 Python 解释器会认作 8 个空格。而 Python 解释器的语法是根据 8 个空格去理解程序的。
julyclyde
2018-04-28 08:06:45 +08:00
@ipwx 最后一句“ Python 解释器的语法是根据 8 个空格去理解程序的”显然是不对的。如果按 8 个来理解,那 2 个 4 个的都是语法错误了
zhanglintc
2018-04-28 13:29:01 +08:00
讲道理, 如果写 continue 不会出问题的话, pass 也不会出问题啊.
感觉还是没找到根源来着.
ipwx
2018-04-28 19:47:00 +08:00
@julyclyde 我的意思是,Python 碰到 tab 会理解为这里有 8 个空格

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

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

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

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

© 2021 V2EX