【发布时间】:2020-07-22 15:30:07
【问题描述】:
我正在寻找风格指导。在 Python 中,异常被用作“正常”操作:
try:
z = x/y
except ZeroDivisionError:
z = 73.0 # set z if y is zero
我们不是检查 y 是否接近于零,而是进行除法并捕获异常。
John Barnes 在 Ada 中的“Programming in Ada 2012”中说明了这种方法:
begin
Tomorrow := Day'Succ(Today);
exception
when Constraint_Error =>
Tomorrow := Day'First;
但是,这本书接着说“这是一个非常糟糕的例子。例外应该用于很少发生的情况......”。
我是 Ada 的新手,像我们在 Python 中那样使用异常来避免 if 语句是一种好的 Ada 编程风格吗?还是真的只是在 Ada 中将异常用于讨厌的事情?
【问题讨论】:
-
我离python专家还很远,对Ada一无所知,但据我所知,python是特别容易上手的和快速的
try-catch结构。在我知道的任何其他编程语言中,try-catch会严重影响性能,因此您应该只在无法通过一些解析/检查处理它时才使用它。也许这就是这本书所说的。 -
同意@AnderBiguri。
try-catch的广泛使用是 Python 设计的一部分,被认为是一种 pythonic 风格,这可能只对 Python 有意义,但是嘿:我们可能错了。 -
Ada 中的异常成本取决于实现;更多here.
-
从风格和可读性的角度来看,你的sn-p非常好!
标签: ada