我想在发生异常时退出函数。 我想用'return'以外的其他方法在Python中退出函数
0
A
回答
3
想不到另一种方式来“退出”a)return以外的函数,b)抛出异常,或c)终止程序的执行。
+0
c)类是b)的子类:raise SystemExit – jfs 2009-01-17 00:38:50
+0
我更多地指的是终止进程(手动从程序外部?)。虽然好点。 – 2009-01-17 04:33:36
13
如果你发现一个异常,然后要重新抛出,this pattern很简单:
try:
do_something_dangerous()
except:
do_something_to_apologize()
raise
当然,如果你想加薪摆在首位的例外,那很容易,太:
def do_something_dangerous(self):
raise Exception("Boo!")
如果这不是你想要的,请提供更多信息!
3
例外本身将终止函数:
def f():
a = 1/0 # will raise an exception
return a
try:
f()
except:
print 'no longer in f()'
2
假设你想“停止”执行该方法的内部。有几件事你可以做。
- 不要捕捉异常。这会将控制返回到首先调用它的方法。然后你可以随心所欲地做任何事情。
- sys.exit(0)这一个实际上退出整个程序。
- return我知道你说你不想要回报,但听我说。返回是有用的,因为根据您返回的值,这将是让用户知道哪里出错的好方法。
1
正如其他人指出的那样,一个例外会让你脱离方法。你不应该因为例外而感到羞愧或尴尬;例外表示错误,但这不一定与错误相同。
例如,假设我正在写一个阶乘函数。阶乘是不是负数定义,所以我可能做到这一点:
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!
相关问题
- 1. 在python程序中退出函数
- 2. 在Python中调用退出函数
- 3. 退出Python函数调用
- 4. 使用Python退出函数
- 5. Erlang退出函数?
- 6. 如何在Python中使用1小时后退出函数
- 7. 在Python中退出函数的正确方法
- 8. 如何在bash中退出函数
- 9. 如何在MVC中退出函数?
- 10. 如何在Node.js中退出函数
- 11. 在Python中退出Tks mainloop?
- 12. 在Python中退出代码
- 13. 在Python中退出html?
- 14. 从函数或main中退出python脚本会更好吗?
- 15. Python在构造函数调用后退出
- 16. 事件后退出函数
- 17. 使用pytest.fixture退出函数
- 18. pyqt类的退出函数
- 19. F#递归函数退出?
- 20. 强制退出readline()函数
- 21. 如何退出javascript函数?
- 22. 从函数退出循环
- 23. C++函数退出任意
- 24. 的JavaScript函数退出
- 25. 退出嵌套函数
- 26. 从javascript函数退出
- 27. 退出内部函数PHP
- 28. umask和退出函数
- 29. 如何在函数入口处执行日志记录,在Python中退出并退出
- 30. Python 2.7退出
请提供代码。 – 2009-01-15 14:58:44