提问人:Aaditya Jindal 提问时间:7/17/2023 最后编辑:Aaditya Jindal 更新时间:7/17/2023 访问量:26
在python3中再次调用函数之前,如何清除异常上的当前调用堆栈?
How to clear the current call stack on exception before re calling the function again in python3?
问:
我对 python 和错误处理非常陌生。目前,我已经编写了一个程序,用于访问用户的电子邮件帐户并获取所请求电子邮件的内容。我使用基于数字的菜单来设置过滤器以选择所需的电子邮件。与 python 中的任何数字输入一样,这会产生需要处理的潜力。为此,我使用 except 语句。在 except 语句中,我告知用户该字段需要数字输入,然后调用函数再次接受输入,从而导致尾递归。但是,我意识到这不是一个理想的解决方案,因为最终,如果产生足够的错误,它会导致缓冲流。ValueError
所以,我的问题是,有没有更好的方法来实现同样的目标。例如,有没有办法清除当前调用堆栈,然后从头开始重新启动程序,以防止缓冲区过流?
感谢您的任何建议。
我试图查找几篇关于堆栈而不是流和其他方面的文章,但它们似乎都没有涵盖我面临的问题。
答:
0赞
Cmd858
7/17/2023
#1
这是一个相当基本的例子,但我认为我很好地展示了我在说什么
def getEmail():
# email logic
inp = int(input('Input a number >>> ')) # conversion that can throw an error
return inp
while 1: # loops forever
try:
print(getEmail())
except ValueError:
print('Numeric input required')
这是一个很好的解决方案,因为异常会自动推送堆栈,这意味着您不必在函数内部调用函数,而是可以让它完成,然后再次调用它。
评论
while True