quit 函数在 try-except 块中不起作用
quit function does not work in try-except block
这是我想要 运行 在 try except 块中退出的函数..
def quit_function(quit):
if(quit=="quit"):
sys.exit(1)
当我输入正确的输入时它工作 function_one 但是当我写 "exit" 以退出程序时 quit_function 不起作用,除了部分工作所以输出是 "invalid input"..我该如何解决?
while True:
try:
a=raw_input("Enter input :").lower()
function_one(a)
quit_function(a)
except:
print "invalid input"
else:
break
exit
引发了一个 SystemExit
,它继承自 BaseException
。
您正在 except
街区赶上出口。尝试使 except
更具体,只捕获正常异常(而不是退出信号):
try:
...
except Exception:
print "Invalid input"
更好的是,找出您需要捕获的实际特定类型的异常,并且只捕获它。
sys.exit
函数实际上引发了一个特殊的 SystemExit
异常,它将向上传播堆栈,执行 finally
块 try 语句,直到异常被捕获或到达栈顶。在后一种情况下,python 干净地退出,而不是打印回溯。为避免捕获 SystemExit
异常,请将裸 except
语句更改为 except Exception
或更具体的内容。或者,如果你真的需要在没有异常处理程序的情况下立即退出 运行,你可以使用 os._exit
我假设 当我写 "exit" 实际上意味着 当我写 "quit" 因为你函数查找字符串 "quit"
.
首先,因为你有一个通用的 except
块,你看不到实际的 Exception
是什么,所以我敢打赌 function_one("quit")
会抛出一个 Exception
.您需要在 function_one()
.
之前处理 quit_function()
其次,sys.exit()
还会抛出一种特殊类型的异常,因此 except:
不会削减它。
按照这些思路应该可行:
while True:
try:
a=raw_input("Enter input :").lower()
quit_function(a)
function_one(a)
except Exception:
print "invalid input"
else:
break
这是我想要 运行 在 try except 块中退出的函数..
def quit_function(quit):
if(quit=="quit"):
sys.exit(1)
当我输入正确的输入时它工作 function_one 但是当我写 "exit" 以退出程序时 quit_function 不起作用,除了部分工作所以输出是 "invalid input"..我该如何解决?
while True:
try:
a=raw_input("Enter input :").lower()
function_one(a)
quit_function(a)
except:
print "invalid input"
else:
break
exit
引发了一个 SystemExit
,它继承自 BaseException
。
您正在 except
街区赶上出口。尝试使 except
更具体,只捕获正常异常(而不是退出信号):
try:
...
except Exception:
print "Invalid input"
更好的是,找出您需要捕获的实际特定类型的异常,并且只捕获它。
sys.exit
函数实际上引发了一个特殊的 SystemExit
异常,它将向上传播堆栈,执行 finally
块 try 语句,直到异常被捕获或到达栈顶。在后一种情况下,python 干净地退出,而不是打印回溯。为避免捕获 SystemExit
异常,请将裸 except
语句更改为 except Exception
或更具体的内容。或者,如果你真的需要在没有异常处理程序的情况下立即退出 运行,你可以使用 os._exit
我假设 当我写 "exit" 实际上意味着 当我写 "quit" 因为你函数查找字符串 "quit"
.
首先,因为你有一个通用的 except
块,你看不到实际的 Exception
是什么,所以我敢打赌 function_one("quit")
会抛出一个 Exception
.您需要在 function_one()
.
quit_function()
其次,sys.exit()
还会抛出一种特殊类型的异常,因此 except:
不会削减它。
按照这些思路应该可行:
while True:
try:
a=raw_input("Enter input :").lower()
quit_function(a)
function_one(a)
except Exception:
print "invalid input"
else:
break