簡體   English   中英

退出函數在try-except塊中不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM