Python - 提出异常与否?

时间:2011-08-16 15:11:11

标签: python python-2.5

以下是我的问题的描述:

我的任务是获取一堆表名并在其前面添加前缀,如下所示:

PREFIX = 'foo_';

prefixed_tablename = "".join([PREFIX, tablename[:27]])

(表名不得超过30个字符(某些Oracle数据库限制),这就是我只采用前27个字符的原因。)

现在,有时这会导致重复的表名(如果只有表名的最后3个字符不同)。

我可以实现一些奇特的算法来创建唯一的表名,但目前检测重复的名称就足够了。所以我考虑将它们存储在一个集合中,如果创建一个带前缀的表名,请检查该集合以查看这样的表名是否已经存在。

现在,对于 真实 问题:

如果检测到重复,我需要停止执行脚本,显示某种错误。在Java中,我只会引发异常,但我不知道这是否是Python中的首选方式。

我应该提出异常,还是打印出一条消息并退出?

3 个答案:

答案 0 :(得分:4)

27 + 4 = 31。

为什么不使用例外?如果您以后不想退出,而是在外部范围内捕获异常并对其执行某些操作,那么与使用sys.exit相比,您的更改要少。

答案 1 :(得分:2)

Python中的异常实际上比Java中使用的更宽松(例如,迭代器在内部使用它们来表示何时停止迭代)。如果这确实是一个“例外”的情况 - 也就是说,如果这种情况不会经常发生,那么这是一个完美的情况,可以提出异常。

答案 2 :(得分:1)

我会说你应该提出异常。如果使用消息构造异常,则脚本将根据需要退出消息,如果您想要更改处理错误的方式,则可能更容易引发异常。此外,如果您使用此代码作为较大程序的一部分,您将能够决定如何在较大的程序中单独处理错误。