主动抛出ArgumentError算不算不道德?
如果你想添加一些额外的检查,而这些检查是argparse
没有提供的,比如:
if variable a == b then c should be not None
...你可以自己抛出ArgumentError
吗?
或者,你应该抛出Exception
吗?
另外,在这种情况下,通常的做法是什么呢?假设你添加了一段代码,几乎就像是对这个库的本地扩展。你应该使用和你扩展的库相同的异常类型吗?
1 个回答
23
抛出一个ArgumentError(参数错误)其实没有什么问题。当你收到的参数和你预期的不一样时,你可以随时使用它,这也包括检查数字的范围。
另外,没错,一般来说,如果你在为某个库写扩展,使用这个库提供的相同异常是可以的。
至于抛出Exception
,我不建议这样做。你应该总是抛出一个具体的异常,这样你才能知道在代码中该如何处理它。捕获Exception
对象应该在你应用程序的最高层进行,这样可以捕获并记录所有你遗漏的异常。