这是退出函数,我想在try除了块之外运行它。
def quit_function(quit):
if(quit=="quit"):
sys.exit(1)
当我输入正确的输入时它起作用function_one但是当我写“exit”以退出程序时quit_function不起作用,除了部分工作因此输出是“无效输入”..我该如何修复它? / p>
while True:
try:
a=raw_input("Enter input :").lower()
function_one(a)
quit_function(a)
except:
print "invalid input"
else:
break
答案 0 :(得分:6)
class ModalFormCaptureFilePreviewViewController: UIViewController, QLPreviewControllerDataSource, QLPreviewControllerDelegate {
var currentFile:Files?
let preview = QLPreviewController()
override func viewDidLoad() {
super.viewDidLoad()
preview.dataSource = self
showViewController(preview, sender: self)
}
提出SystemExit
,其继承自exit
。
您正在捕捉BaseException
区块中的退出。尝试使except
更具体,仅捕获正常异常(不是退出信号):
except
更好的是,找出你需要捕获的实际特定类型的异常,并且只捕获它。
答案 1 :(得分:0)
SystemExit
函数实际上引发了一个特殊的finally
异常,该异常会传播堆栈,执行SystemExit
个try语句块,直到异常被捕获或到达堆栈顶部。在后一种情况下,python干净地退出,而不是打印回溯。要避免捕获except
异常,请将您的except Exception
声明更改为os._exit
或更具体的内容。或者,如果你真的需要立即退出而没有运行的激活处理程序,你可以使用import datetime as dt
dates='''\
2015/11/11
1941/12/07
1776/07/04'''
for ds in dates.splitlines():
date=dt.datetime.strptime(ds, '%Y/%m/%d').date()
print(date.strftime("%B %d, %Y"))
答案 2 :(得分:0)
当我写“退出”当我写“退出”时我会假设,因为你的函数会查找字符串 首先,因为你有一个通用的 其次, 这些方面应该有效:"quit"
。< / p>
except
阻止,你没有看到实际的Exception
是什么,所以我打赌function_one("quit")
抛出一个Exception
。您需要在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