Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Windows控制台提示不';出现未处理的异常后,将无法显示_Python_Windows_Console - Fatal编程技术网

Python Windows控制台提示不';出现未处理的异常后,将无法显示

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

现在觉得自己很愚蠢。我在Windows控制台中打开了一个python文件,该文件引发了一个错误(例如
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导出(例如,try
ctypes.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