注意:我編輯了我的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#,而不是蟒蛇,再加上如果你讀了作者的編輯的版本,你會看到他有一點不同的問題。]