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