所以我知道我可以使用pyinstaller
来使Python可执行。如何在发生错误时让Python可执行文件暂停?
但是,每当它产生一个错误,它会立即结束程序,所以我找不到错误。
我知道我可能可以用time.sleep(30000)
来阻止它。
但是,如果代码在遇到time.sleep(30000)
之前产生错误,它将会关闭。
总结一下,如何让它不停机,所以我可以看到错误在哪里?
所以我知道我可以使用pyinstaller
来使Python可执行。如何在发生错误时让Python可执行文件暂停?
但是,每当它产生一个错误,它会立即结束程序,所以我找不到错误。
我知道我可能可以用time.sleep(30000)
来阻止它。
但是,如果代码在遇到time.sleep(30000)
之前产生错误,它将会关闭。
总结一下,如何让它不停机,所以我可以看到错误在哪里?
如果您只是通过双击运行可执行文件,请尝试从控制台运行它。对于例如在Windows中:
在CMD,运行
cd executable_path myexecutable.exe
一个更好的办法是引入记录器,以便其他模块,实现日志写入文件。
此外,您还可以将代码放在try-except块:
try:
#my_code_here
print('Here is where the exception is')
except Exception as e:
print('Unexpected error:' + str(e))
所以你的意思是我可以在尝试下添加整个代码:?我知道尝试,除了之前。但我不确定是否可以做这样的事情 - 在尝试下添加整个代码(可能是1000行)。 –
我喜欢你的控制台答案,完美的作品!谢谢! –
是的,您可以将整个代码置于try-except之下,并使其捕获任何异常。您可以将例外打印到控制台或放入日志文件或同时执行这两个操作。 –
而不是只需双击该文件,从命令行运行它。当程序结束时,程序自动创建的终端窗口也会自动关闭,但是如果您自己打开终端并从命令行运行程序,它将不会触及开放终端,您可以读取该错误。
您可以使用try except
像什么火星李先生说,也可以一定量线后,做了
print("Test 1");
。
从你的描述,它听起来就像你正在运行控制台程序(即具有可视的控制台窗口中的程序)。
如果是这样,你有两个选择:在控制台窗口
cd
进入包含程序的目录,然后通过输入程序名称运行它。程序退出时(例如,由于错误),回溯将被打印出来,并且您将返回到提示。您可以在您的整个程序中添加一个try
/except
,以捕获任何错误并报告它们。例如:
try:
main()
except Exception:
import traceback
traceback.print_exc()
raw_input("Program crashed; press Enter to exit")
谢谢你的帮助!你的回答非常好,很清楚! –
这里的另一种方式,使用Python的异常钩:
import sys
def myexcepthook(type, value, traceback, oldhook=sys.excepthook):
oldhook(type, value, traceback)
raw_input("Press RETURN. ") # use input() in Python 3.x
sys.excepthook = myexcepthook
异常钩被称为Python的时候要打印一个例外。在这种情况下,我们调用先前安装的异常挂钩(打印异常),然后等待用户按Return键。
谢谢你的回答。但我不明白你的代码是如何工作的。你能帮我解释一下吗?谢谢:) –
加了一点解释;让我知道你是否需要更多。 – kindall
使用'try except'来捕捉错误 – haifzhan
@haifzhan - OP想查看错误,而不是压制它。 – TigerhawkT3
尝试/除了不抑制错误。 – kindall