为了清楚起见,我正在编辑问题。
我在导入 MySQLdb 的模块中创建了一个类。我发现如果用户传递给我的类的表不存在,MySQLdb 将引发异常。我正在捕获该异常,并将一个新异常传递给客户。但即使客户端捕捉到我的异常,程序仍然会终止。我也尝试将相同的异常 MySQLdb 传递给客户端。
由于客户端将在循环中调用我的方法,并传入各种表名,因此如果表名不好,我不希望程序阻塞。我希望客户的迭代继续到下一个有效的表名。这是一个片段(tableName 是传递给该方法的参数):
在我的班级/模块中:
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() 是在客户端导入的其自己的模块中定义的类的一部分。
谢谢你。