
现在的代码类似于:
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 Apr 27, 2018 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 Apr 27, 2018 Only one note: https://docs.python.org/3/library/exceptions.html#exception-hierarchy May not be helpful for your problem. |
4 ipwx Apr 27, 2018 顺便 Python 里面一个 tab 等于 8 个空格。如果你空格 和 tab 混用,小心被坑。 |
5 zhouxuchen Apr 27, 2018 @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 Apr 27, 2018 @hackpro 一般大家都用 4 个空格缩进。Google 用 2 个。空格 tab 混用的风险在于,大部分编辑器会显示成 4 个空格,但是 Python 解释器会认作 8 个空格。而 Python 解释器的语法是根据 8 个空格去理解程序的。 |
10 julyclyde Apr 28, 2018 @ipwx 最后一句“ Python 解释器的语法是根据 8 个空格去理解程序的”显然是不对的。如果按 8 个来理解,那 2 个 4 个的都是语法错误了 |
11 zhanglintc Apr 28, 2018 讲道理, 如果写 continue 不会出问题的话, pass 也不会出问题啊. 感觉还是没找到根源来着. |