我想在异常发生时离开函数。 我想使用除'return'之外的其他方法
答案 0 :(得分:17)
如果您发现异常然后想要重新抛出异常,this pattern非常简单:
try:
do_something_dangerous()
except:
do_something_to_apologize()
raise
当然,如果你想首先引发异常,那也很容易:
def do_something_dangerous(self):
raise Exception("Boo!")
如果那不是您想要的,请提供更多信息!
答案 1 :(得分:4)
异常本身将终止该功能:
def f():
a = 1 / 0 # will raise an exception
return a
try:
f()
except:
print 'no longer in f()'
答案 2 :(得分:3)
想不出另一种方法来“退出”a)以外的函数返回,b)抛出异常,或c)终止程序的执行。
答案 3 :(得分:2)
假设您要在该方法内“停止”执行。你可以做一些事情。
答案 4 :(得分:2)
正如其他人所指出的,一个例外会让你退出该方法。你不应该被例外感到羞耻或羞辱;异常表示错误,但这不一定与错误相同。
例如,假设我正在编写一个阶乘函数。因为没有为负数定义因子,所以我可以这样做:
def factorial(n):
if n < 0:
raise ValueError
if n == 0:
return 1
return n*factorial(n-1)
然后我会寻找异常:
n = raw_input('Enter a number.')
try:
print factorial(n)
except ValueError:
print 'You entered a negative number.'
通过定义我自己的:
,我可以使异常比ValueError更具信息性class NegativeInputError(Exception):
pass
# in the function:
if n < 0:
raise NegativeInputError
HTH!