这个问题可能已被问过几次,但我似乎无法找到它。
基本上我只是学习Python而且我在Windows上,这意味着我双击.py
文件并打开它。这很有效,直到出现错误,此时Python调用exit并关闭窗口。
当然,解决这个问题的一种方法是在Windows中使用cmd
程序并从那里运行Python程序,但是,有没有办法解决它,以便我的应用程序不会如果我从Windows资源管理器中打开它,它会在遇到错误时立即关闭并关闭?
while(True):
try:
number = input('Enter a number: ')
if(is_int(number) is False):
print('Please actually enter a number')
if(number > 0):
answer = input('Oh Noes you really want that?')
if(answer == 'yes'):
sys.exit(0);
except KeyboardInterrupt:
sys.exit(0)
except Exception as e:
input('')
答案 0 :(得分:2)
为了保持您的计划完好无损,例如为了不引入不需要的catch-em-all异常处理(又名pokemon处理),至少有三个选项:
cmd
或powershell
或任何第三方控制台应用程序。我建议从启动器的选项1开始,然后慢慢转到小脚本和项目的选项3,以及大版本的选项2。
答案 1 :(得分:1)
我在脚本底部放置了input
函数,然后它会挂起,直到您按Enter或关闭命令提示符。如果调用exit函数,则在调用exit函数之前立即调用它。否则将它放在脚本的底部。
另外我假设您已在脚本中定义了is_int?
答案 2 :(得分:1)
您认为它应该做什么?
Python正在绘制你看到的窗口,如果python崩溃,窗户就会消失。
您可以通过cmd或在IDE中运行它。 (就像IDLE一样,虽然涉及到GUI但存在一些问题)
否则,在文件末尾添加类似的内容
try:
run()
except Exception as inst:
print type(inst), inst.args
#it prints the exception
print sys.exc_traceback.tb_lineno
#if you want the line number where the error occurred in the source code
raw_input()
inst是异常实例,您可以看到参数的类型和列表。 然后使用sys模块,您还可以看到代码中出现错误的行。
这样,每个错误都将在关闭之前处理和显示
这是正确的方法吗?
没有。您应该使用广告IDE(例如Eclipse与PyDev或PyCharm)。
答案 3 :(得分:0)
@SeçkinSavaşçı在开始时非常有用的评论:
最常见的方法是让它等待输入,然后忽略输入并终止脚本。
我花了一秒钟才明白我去了解如何做到这一点,所以首先我看到停止脚本并使用:
while(True):
try:
# Application code here
except:
input('')
哪种方法可以很好地捕获所有错误,这与PHP不同(不幸的是我已经很熟悉)都是例外。
所以下一部分是告诉我发生了什么错误以及如何解决它,我需要一个回溯。只是碰巧Python文档在这里给出了答案:http://docs.python.org/2/library/traceback.html#traceback-examples在一个容易看到的例子中:
exc_type, exc_value, exc_traceback = sys.exc_info()
print(traceback.print_exception(exc_type, exc_value, exc_traceback, limit=2, file=sys.stdout));
将其添加到input('')
上方,我完成了错误处理,向我展示了我需要的一切。
全心全意,
答案 4 :(得分:0)
尝试导入时间和time.sleep()。另外,我建议您使用IDLE或Geany。我一直在使用它们,效果很好。