什么叫sys.exit()
和Python中抛出异常的区别?
比方说,我有一个Python脚本,执行以下操作:
如果该文件不存在或IOException
都在运行时抛出,该选项下面更有意义?
except IOException
块,出口与例如错误消息sys.exit("something is wrong")
是否选择3杀死进程,而1和2不?什么是处理给出了Python异常的最好方法是Python没有检查异常,如Java(我真的是一个Java开发人员^ _ ^)?
sys.exit
提出了SystemExit
本身所以从纯技术角度有自己养的是异常或使用sys.exit
之间没有什么区别。是的,你可以赶上SystemExit
异常像任何其他异常,忽略它。
所以它只是一个记录你的意图更好的事情。
PS:请注意,这也意味着sys.exit
实际上是一个非常糟糕的用词不当 - 因为如果你在一个线程中使用sys.exit
只有线程终止而已。这可以是非常恼人的,是的。
有一个小的,细微的差别:
import sys
try:
sys.exit()
except:
print("Caught")
这except
声明而捕捉异常:
进口SYS
try:
sys.exit()
except Exception:
print("Caught")
退出没有错误。 SystemExit
除外(例如KeyboardInterrupt
)不受except Exception
抓住了,但单独由except
抓获。
因此,如果调用者捕捉与except:
一切(这是不好的做法),您sys.exit
不会退出,但会被认为是一个“错误”(这就是为什么except Exception:
是更好地一定要赶除CTRL + C和系统退出所有异常(这是BaseException
类的)。