主动抛出ArgumentError算不算不道德?

17 投票
1 回答
6729 浏览
提问于 2025-04-17 07:12

如果你想添加一些额外的检查,而这些检查是argparse没有提供的,比如:

if variable a == b then c should be not None 

...你可以自己抛出ArgumentError吗?

或者,你应该抛出Exception吗?

另外,在这种情况下,通常的做法是什么呢?假设你添加了一段代码,几乎就像是对这个库的本地扩展。你应该使用和你扩展的库相同的异常类型吗?

1 个回答

23

抛出一个ArgumentError(参数错误)其实没有什么问题。当你收到的参数和你预期的不一样时,你可以随时使用它,这也包括检查数字的范围。

另外,没错,一般来说,如果你在为某个库写扩展,使用这个库提供的相同异常是可以的。

至于抛出Exception,我不建议这样做。你应该总是抛出一个具体的异常,这样你才能知道在代码中该如何处理它。捕获Exception对象应该在你应用程序的最高层进行,这样可以捕获并记录所有你遗漏的异常。

撰写回答