现在的代码类似于:
def some_func():
...
if __name__ == "__main__":
while True:
try:
some_func()
except Exception as e:
pass
但是 PyCharm 中运行还是会抛异常导致程序 Crash
请教小伙伴这段代码有什么问题吗
另外应该如何更好地保证代码长时间运行不 Crash 的问题 谢谢
感谢各位 将 pass 换成 continue 跑了段时间似乎没有问题了
在Python里 pass 相当于一个placeholder,实际上是NOP
但是对于已经抓到的Exception 为啥还是Crash呢,continue 似乎不会?
1
alvin666 2018-04-27 16:22:04 +08:00 via Android
把代码全放上来看看,是哪里出错了?
|
2
hackpro OP @alvin666 #1 这个 some_func() 里面就是 get post 数据
本意是如果出现问题 就忽略掉 但是现在报了 HTTPSConnectionPool Exception 并且 Crash 了 Max tries exceeded with url: (Caused by SSLError(SSLError("bad handshake syscallerror(-1, "Unexpected EOF")"))) |
3
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. |
4
ipwx 2018-04-27 16:57:22 +08:00
顺便 Python 里面一个 tab 等于 8 个空格。如果你空格 和 tab 混用,小心被坑。
|
5
zhouxuchen 2018-04-27 16:59:06 +08:00
@ipwx #4 眼尖的,我看了下还真是,LZ 这个编码习惯不好
|
6
hackpro OP @ipwx #3 感谢回复
1. 意思是如何我 capture BaseException 能捕捉所有类型 Exception, 只抓 Exception 会 miss 掉一部分? 2. 通常我是只用 tab 不过 Python 缩进的话 4 个空格就够了吧…… |
7
hackpro OP @zhouxuchen #5 这个代码在 V2 里我是手动敲的 因为缩进不太好弄
|
9
ipwx 2018-04-27 17:56:12 +08:00
@hackpro 一般大家都用 4 个空格缩进。Google 用 2 个。空格 tab 混用的风险在于,大部分编辑器会显示成 4 个空格,但是 Python 解释器会认作 8 个空格。而 Python 解释器的语法是根据 8 个空格去理解程序的。
|
10
julyclyde 2018-04-28 08:06:45 +08:00
@ipwx 最后一句“ Python 解释器的语法是根据 8 个空格去理解程序的”显然是不对的。如果按 8 个来理解,那 2 个 4 个的都是语法错误了
|
11
zhanglintc 2018-04-28 13:29:01 +08:00
讲道理, 如果写 continue 不会出问题的话, pass 也不会出问题啊.
感觉还是没找到根源来着. |