[英]quit function does not work in try-except block
這是退出功能,我想在try除了塊之外運行它..
def quit_function(quit):
if(quit=="quit"):
sys.exit(1)
當我輸入正確的輸入它工作function_one但當我寫“退出”以退出程序quit_function不起作用時,除了部分工作,所以輸出是“無效輸入”..我該如何解決?
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
異常,請將bare except
語句更改為except Exception
或更具體的名稱。 或者, 如果您確實需要在沒有運行 os._exit
處理程序的情況下立即退出 ,則可以使用os._exit
當我寫“退出”時,我會假設當我寫“退出” 時,因為你的函數會查找字符串"quit"
。
首先,因為你有一個通用的except
塊,你沒有看到實際的Exception
是什么,所以我打賭function_one("quit")
拋出Exception
。 您需要在quit_function()
之前處理quit_function()
function_one()
。
其次, 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.