如何在引发错误时使Python可执行文件暂停?

时间:2016-04-25 04:08:34

标签: python

所以我知道我可以使用int[] frames = {R.drawable.frame1, R.drawable.frame2, R.drawable.frame3}; AnimationDrawable drawable = new AnimationDrawable(); for (int fr : frames) { Bitmap sample = BitmapFactory.decodeResource(mActivity.getResources(), fr); sample = Bitmap.createScaledBitmap(sample, sample.getWidth()/4, sample.getHeight()/4, false); drawable.addFrame(new BitmapDrawable(mActivity.getResources(), sample), 30); } 使Python可执行。

但是,每次引发错误时,它都会立即结束程序,所以我找不到错误。

我知道我可能会使用pyinstaller来阻止它。

但如果代码在遇到time.sleep(30000)之前引发错误,它就会关闭。

总结一下,如何让它不停地关闭,所以我可以看出错误在哪里?

5 个答案:

答案 0 :(得分: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))

答案 1 :(得分:1)

根据您的描述,听起来您正在运行控制台程序(即具有可见控制台窗口的程序)。

如果是这样,您有两种选择:

  1. 在控制台窗口中运行它。这只需要运行命令提示符或终端模拟器(随计算机附带),cd进入包含程序的目录,然后输入程序名称运行它。当程序退出时(例如由于错误),将打印出回溯并返回到提示符。
  2. 您可以在整个程序中添加try / except来捕获任何错误并报告错误。例如:

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

你可以像Mars Lee所说的那样使用try except,或者你可以做

print("Test 1");

经过一定数量的线条后。