注意:我编辑了我的Q(在标题中),以便更好地反映我真正想知道的内容。在我的Q的原始标题和文本中,我提到了抛出异常的来源;我的意思,以及我应该提到的,正如在下面的一个高度紧张但有用的回应中指出的那样,模块异常类在中定义。这一点可以从以下事实中得到证明:正如在下面的答案中的一个答案中指出的那样,原始Q的答案是异常分别从对cursor.execute和cursor.next的调用中抛出 - 当然,这不是您需要写入try/except块的信息。如何确定模块特定的异常类定义
对于实例(Q具有什么特别的SQLite或PySQLite模块做):
from pysqlite2 import dbapi2 as SQ
try:
cursor.execute('CREATE TABLE pname (id INTEGER PRIMARY KEY, name VARCHARS(50)')
except SQ.OperationalError:
print("{0}, {1}".format("table already exists", "... 'CREATE' ignored"))
#
cursor.execute('SELECT * FROM pname')
while 1:
try:
print(cursor.next())
except StopIteration:
break
#
我让这两个片段错误出去看抛出异常,然后对try/finally块进行编码 - 但是没有告诉我有关定义异常类的模块。在我的例子中,只有一个导入的模块,但在那里有更多,我有兴趣知道一个有经验的pythonista如何识别异常源(search-the-docs-until-i-happen-to-find-it)我目前的方法)。
[和是的,我知道有上SO几乎相同的问题 - 但对于C#,而不是蟒蛇,再加上如果你读了作者的编辑的版本,你会看到他有一点不同的问题。]