以下是我的问题的描述:
我的任务是获取一堆表名并在其前面添加前缀,如下所示:
PREFIX = 'foo_';
prefixed_tablename = "".join([PREFIX, tablename[:27]])
(表名不得超过30个字符(某些Oracle数据库限制),这就是我只采用前27个字符的原因。)
现在,有时这会导致重复的表名(如果只有表名的最后3个字符不同)。
我可以实现一些奇特的算法来创建唯一的表名,但目前检测重复的名称就足够了。所以我考虑将它们存储在一个集合中,如果创建一个带前缀的表名,请检查该集合以查看这样的表名是否已经存在。
现在,对于 真实 问题:
如果检测到重复,我需要停止执行脚本,显示某种错误。在Java中,我只会引发异常,但我不知道这是否是Python中的首选方式。
我应该提出异常,还是打印出一条消息并退出?
答案 0 :(得分:4)
27 + 4 = 31。
为什么不使用例外?如果您以后不想退出,而是在外部范围内捕获异常并对其执行某些操作,那么与使用sys.exit
相比,您的更改要少。
答案 1 :(得分:2)
Python中的异常实际上比Java中使用的更宽松(例如,迭代器在内部使用它们来表示何时停止迭代)。如果这确实是一个“例外”的情况 - 也就是说,如果这种情况不会经常发生,那么这是一个完美的情况,可以提出异常。
答案 2 :(得分:1)
我会说你应该提出异常。如果使用消息构造异常,则脚本将根据需要退出消息,如果您想要更改处理错误的方式,则可能更容易引发异常。此外,如果您使用此代码作为较大程序的一部分,您将能够决定如何在较大的程序中单独处理错误。