我想在发生异常时退出函数。 我想用'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. 如何在Node.js中退出函数
- 4. 如何在MVC中退出函数?
- 5. 在Python中退出html?
- 6. 在Python中退出Tks mainloop?
- 7. 在Python中退出代码
- 8. Python在构造函数调用后退出
- 9. 从函数或main中退出python脚本会更好吗?
- 10. 强制退出readline()函数
- 11. C++函数退出任意
- 12. F#递归函数退出?
- 13. Python 2.7退出
- 14. C函数在输入之前退出
- 15. ajax调用中的jquery退出函数
- 16. 叉和退出在Python
- 17. 正在退出Python While True
- 18. C#:'抛出'退出当前函数吗?
- 19. 退出命令行Python中
- 20. C函数指针参数在函数退出时不一样
- 21. 在std :: locale析构函数中退出时出现故障
- 22. 在Python中退出脚本命令
- 23. 在Python中退出主循环
- 24. while循环不在python中退出
- 25. 如何在Python中退出程序if
- 26. 如何在Python 3.2中退出?
- 27. 在python中退出一个线程?
- 28. 如何关闭文件句柄而函数在Python中异常退出?
- 29. 无法捕获ctrl-c退出函数退出bash脚本
- 30. BASH不同退出级别的多个退出函数
请提供代码。 – 2009-01-15 14:58:44