【发布时间】:2013-02-22 19:52:48
【问题描述】:
为了清楚起见,我正在编辑问题。
我在导入 MySQLdb 的模块中创建了一个类。我发现如果用户传递给我的类的表不存在,MySQLdb 将引发异常。我正在捕获该异常,并将一个新异常传递给客户。但即使客户端捕捉到我的异常,程序仍然会终止。我也尝试将相同的异常 MySQLdb 传递给客户端。
由于客户端将在循环中调用我的方法,并传入各种表名,因此我不希望程序在表名错误时阻塞。我希望客户的迭代继续到下一个有效的表名。这是一个 sn-p(tableName 是传递给方法的 arg):
在我的班级/模块中:
self.tableName = 表名 尝试: self.cursor.execute("select * from " + self.tableName + ";") #如果表不存在会抛出异常。 除了: raise MyException("\n*** " + self.tableName + " 不存在。***")在客户端:
表 = ["BadTableName", "GoodTableNameA", "GoodTableNameB","GoodTableNameC"] 尝试: 对于表格中的表格: my_method(table) #Exception 消息通过 BadTableName 传入,但程序结束。此循环的子序列迭代永远不会发生 除了例外,e: 打印 e我希望客户端在调用 my_method(BadTableName) 之后继续。
顺便说一句,my_method() 是在其自己的模块中定义的类的一部分,客户端正在导入该类。
谢谢。
【问题讨论】:
-
MyException是继承自Exception还是其他?你使用的是哪个版本的 Python?