这些天来,我正在深入学习Python的异常处理功能。我遇到了exception SystemExit
。在从正式的Python文档中阅读此内容时,我想到了一个问题,当我按Ctrl+终止Python脚本时会发生什么c?
让我们看下面的示例代码:
def func1(a,b):
print "func1: "+str(a/b)
#some more functions
def func2(a,b):
print "func2: "+str(a/b)
#some more functions
if __name__=="__main__":
import random
count=0
for i in range(1000000):
count=count+1
print "count: "+str(count)
try:
func1(random.randint(-2,3),random.randint(-2,3))
except KeyboardInterrupt:
raise
except:
print "error in func1"
try:
func2(random.randint(-2,3),random.randint(-2,3))
except KeyboardInterrupt:
raise
except:
print "error in func2"
print "\n"
在此示例代码中,我正在抓取,KeyboardInterrupt
因此可以通过按Ctrl+停止脚本c。我是否SystemExit
也应该抓住这个机会使这段代码更成熟?如果是,那为什么呢?实际上,这个问题是我主要问题的来源,出现在标题上。所以不要以为我在一个帖子中问两个不同的问题。
您通常并不需要捕捉SystemExit
,因为它是什么使exit()
和sys.exit()
职能的工作:
sys.exit([arg])
从Python退出。这是通过引发
SystemExit
异常来实现的,因此可以执行语句finally
子句指定的清除操作try
,并且有可能在外部级别拦截出口尝试。
例:
try:
exit()
except SystemExit:
print "caught"
因此,通常您不想首先捕获所有异常(通过使用空except:
子句)。最好的方法通常是使异常处理程序尽可能具体。否则,它将使您的应用程序调试异常困难,因为它要么完全隐藏错误,要么至少使诊断细节变得困难。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句