1

这是我的问题的描述:

我的任务是获取一堆表名并在它们前面放一个前缀,如下所示:

PREFIX = 'foo_';

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

(表名不得超过 30 个字符(一些 Oracle DB 限制),这就是我只取前 27 个字符的原因)。

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

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

现在,对于真正的问题:

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

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

4

3 回答 3

4

27 + 4 = 31。

为什么不使用异常?如果您以后不想退出,而是捕获异常并在外部范围内对其进行处理,那么与使用sys.exit.

于 2011-08-16T15:16:30.467 回答
2

Python 中的异常实际上比 Java 更自由地使用(例如,迭代器在内部使用它们来发出迭代停止的信号)。如果这确实是一个“异常”情况——也就是说,如果这种情况不会经常发生,这是理所当然的——那么这是一个引发异常的完美情况。

于 2011-08-16T15:16:03.277 回答
1

I would say you should raise an exception. If you construct the exception with the message then the script will exit with the message as you want, and if you ever want to change how you handle the error it might be easier if you raise an exception. Also, if you ever use this code as part of a larger program, you would be able to decide how to handle the error separately in the larger program.

于 2011-08-16T15:18:22.307 回答