0
我有一套复杂的条件,从中我想退出,一旦遇到。使用异常作为pythonic方法吗?
为此,我想使用它们周围的try:/except:
结构在正确的时间退出,这与goto
类似。令人费解的一个例子(使用raise
到break
从while
)将是:
class Minor(Exception):
pass
class Major(Exception):
pass
age = 15
while True:
try:
if age > 18:
raise Major
else:
raise Minor
except Major:
print('major')
break
except Minor:
print('minor')
break
就是这样异常的使用Python的?换句话说:是否只是为了捕获本来会是Traceback的异常,还是像上面那样有一般用途?
编辑:下面的评论,我想澄清一点,我不看如何简化这段特定的代码 - 真正的代码更复杂的嵌套循环和条件。 我感兴趣的部分是是否有理由特别阻止异常的使用。
不可以。为什么将你正在引发的代码封装在'except'块中而不是将它放在'if'语句或函数调用中是有意义的? –
这对我来说看起来并不是很pythonic。如果带有'break'语句的elif块会不够吗? –
@PatrickHaugh:我认为你评论中的'不'意思是'不,这不是pythonic'?至于你的问题:我的真实情况要复杂得多,有一组fors和whiles,一旦遇到一组标准,我想逃离这些组合。提出例外是我设想的解决方案。 – WoJ