2
Python中流控制的例外是最佳实践吗?
我正在阅读“学习Python”,发现了以下内容: 用户定义的异常也可以表示非错误情况。例如,当找到匹配项时,可以对搜索例程进行编码以引发异常,而不是返回状态标志以供调用方解释。在下面,try / except / else异常处理程序执行if / else返回值测试器的工作: class Found(Exception): pass def searcher(): if ...success...: raise Found() # Raise exceptions instead of returning flags else: return 因为Python是动态类型化的,并且是内核的多态形式,所以通常使用异常而不是哨兵返回值来表示这种情况。 我已经在各种论坛上多次讨论过这种问题,并且使用StopIteration结束循环对Python进行了引用,但是在官方样式指南中找不到很多(PEP 8附带提供了一个流程控制异常引用)或开发人员的声明。有没有官方声明这是Python的最佳做法? 这(作为控制流的异常是否被认为是严重的反模式?如果是,为什么?)也有几个注释者指出此样式是Pythonic。这是基于什么? TIA