Python Windows控制台提示不';出现未处理的异常后,将无法显示
现在觉得自己很愚蠢。我在Windows控制台中打开了一个python文件,该文件引发了一个错误(例如Python Windows控制台提示不';出现未处理的异常后,将无法显示,python,windows,console,Python,Windows,Console,现在觉得自己很愚蠢。我在Windows控制台中打开了一个python文件,该文件引发了一个错误(例如TypeError,AttributeError,等等),控制台将不再工作,因此每次出现错误时,我都必须关闭它并打开一个新窗口。应该有一个快捷方式或一些东西可以退出,但是Ctrl+C不起作用。我有Windows10和Python 3.6 在控制台中运行文件时,会发生以下情况: C:\Users\...path...>python my_file.py Traceback (most rec
TypeError
,AttributeError
,等等),控制台将不再工作,因此每次出现错误时,我都必须关闭它并打开一个新窗口。应该有一个快捷方式或一些东西可以退出,但是Ctrl+C
不起作用。我有Windows10和Python 3.6
在控制台中运行文件时,会发生以下情况:
C:\Users\...path...>python my_file.py
Traceback (most recent call last):
File "C:\Users\...path...\my_file.py", line 74,
...stuff...
AttributeError: my error
在这之后我什么也做不了。如果有人能帮忙 可能是由于错误/错误,您的程序被冻结。请尝试使用异常处理。 例如:
try:
your_codes()
except Exception as ex:
print(ex)
这只是异常处理的一个示例。你可以用更好(但更复杂!)的方法来做。
您可以阅读。对于未处理的异常,Python程序通常会退出,并且您会得到控制台提示。如果你的没有,那就意味着它挂起了 如果Ctrl-C不起作用,可以使用Ctrl-Break强制终止Windows控制台程序。
但你真的应该找出它为什么会挂起来,因为这不正常。我猜你在某处吞下了所有异常,例如,使用了一个不合格的
,除了:
,正是因为这个原因,强烈反对使用它。请分享你的代码好吗?代码并不重要,我想知道的是如何在控制台中编写另一个命令,因为出错后我什么都做不了。这可能与@Thierrylahuille有关吗?实际上,我的程序一直冻结控制台是有问题的,但我也有这个问题,谢谢!我的程序中除了之外没有,我正在使用带有GUI的PyQt5,所以问题可能就在那里,谢谢!!我不知道哪个键是break,你能澄清一下吗?Ctrl+break不会强制终止控制台程序。它通过在运行CtrlRoutine(CTRL\u BREAK\u事件)
的目标进程中注入线程来发送CTRL\u BREAK\u事件
,其中CtrlRoutine
是未记录的kernel32.dll导出(例如,tryctypes.windell('kernel32')。CtrlRoutine(1)
,或0表示CTRL+C)。默认处理程序(如果调用)通过ExitProcess
退出,在这种情况下,至少DLL清理代码仍在运行。您可以安装自定义处理程序,通过Ctrl+Break优雅地退出。CRT的控制处理程序将此映射到SIGBREAK
,可以使用signal
模块将其分配给Python函数。@eryksun-Gee,谢谢您提供的信息!无论如何,重要的是,Python在默认情况下不会捕获它,否则很难捕获它,所以这几乎总是有效的。如果有那么多可怕的,Ctrl-C就不会了,除了:
。处理Ctrl+Break并不难。通过设置处理程序函数,例如,signal.signal(signal.SIGBREAK,SIGBREAK\u handler)
。处理程序应该尝试优雅地退出,但通过操作系统返回硬退出。\u exit
。