2016-04-25 43 views
0

所以我知道我可以使用pyinstaller来使Python可执行。如何在发生错误时让Python可执行文件暂停?

但是,每当它产生一个错误,它会立即结束程序,所以我找不到错误。

我知道我可能可以用time.sleep(30000)来阻止它。

但是,如果代码在遇到time.sleep(30000)之前产生错误,它将会关闭。

总结一下,如何让它不停机,所以我可以看到错误在哪里?

+1

使用'try except'来捕捉错误 – haifzhan

+0

@haifzhan - OP想查看错误,而不是压制它。 – TigerhawkT3

+0

尝试/除了不抑制错误。 – kindall

回答

1

如果您只是通过双击运行可执行文件,请尝试从控制台运行它。对于例如在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)) 
+0

所以你的意思是我可以在尝试下添加整个代码:?我知道尝试,除了之前。但我不确定是否可以做这样的事情 - 在尝试下添加整个代码(可能是1000行)。 –

+0

我喜欢你的控制台答案,完美的作品!谢谢! –

+0

是的,您可以将整个代码置于try-except之下,并使其捕获任何异常。您可以将例外打印到控制台或放入日志文件或同时执行这两个操作。 –

0

而不是只需双击该文件,从命令行运行它。当程序结束时,程序自动创建的终端窗口也会自动关闭,但是如果您自己打开终端并从命令行运行程序,它将不会触及开放终端,您可以读取该错误。

0

您可以使用try except像什么火星李先生说,也可以一定量线后,做了

print("Test 1"); 

1

从你的描述,它听起来就像你正在运行控制台程序(即具有可视的控制台窗口中的程序)。

如果是这样,你有两个选择:在控制台窗口

  1. 运行它。这仅仅包括运行命令提示符或终端仿真程序(随计算机附带),cd进入包含程序的目录,然后通过输入程序名称运行它。程序退出时(例如,由于错误),回溯将被打印出来,并且您将返回到提示。
  2. 您可以在您的整个程序中添加一个try/except,以捕获任何错误并报告它们。例如:

    try: 
        main() 
    except Exception: 
        import traceback 
        traceback.print_exc() 
        raw_input("Program crashed; press Enter to exit") 
    
+0

谢谢你的帮助!你的回答非常好,很清楚! –

0

这里的另一种方式,使用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键。

+0

谢谢你的回答。但我不明白你的代码是如何工作的。你能帮我解释一下吗?谢谢:) –

+0

加了一点解释;让我知道你是否需要更多。 – kindall

相关问题