python cmd模块捕获异常后返回提示符

the*_*eer 5 python cmd

我有这个代码并且我正在使用 python 3:

import cmd
class myShell(cmd.Cmd):
    def do_bad(self, arg):
        raise Exception('something bad happened')


if __name__ == '__main__':
    sh = myShell()
    sh.cmdloop()
Run Code Online (Sandbox Code Playgroud)

我想在抛出异常后返回到 shell 提示符。怎么做?

Mic*_*bez 5

从代码来看,这些函数是从 Cmd.onecmd 调用的(甚至在循环中)。

您可以简单地覆盖它:

def onecmd(self, line):
    try:
        return super().onecmd(line)
    except:
        # display error message
        return False # don't stop
Run Code Online (Sandbox Code Playgroud)

优点是您不会停止命令循环。