如何掌握Python异常处理问题

waiwaiLILI 2010-02-23

想要充分的掌握Python异常处理这门知识,那么就要对Python语言中的结构、语句、变量、函数、预处理指令、输入和输出等内容进行了解掌握,这样才可以轻轻松松的进行Python异常处理问题地解决。

下面介绍Python异常处理。导入必要的模块之后,animal.py使用connect()调用建立到服务器的连接。为了处理连接故障,比如,显示故障的原因,该脚本必须捕捉异常。在Python语言中,为了处理异常,必须把代码放到try语句中,并且包括一个except子句来包含错误处理代码。生成的连接的代码如下所示:

try:  


 



conn = MySQLdb.connect (host = "localhost",  



 



user = "testuser",  



 



passwd = "testpass",  



 



db = "test")  



 


except MySQLdb.Error, e:  


 


print "Error %d: %s" % (e.args[0], e.args[1])  


 


sys.exit (1) 

Except子句中的异常类MySQLdb.Error用于取得MySQLdb可以提供的具体数据库错误信息,而变量e则用来存放错误信息。如果出现异常,MySQLdb会把有关信息存入e.args――这是一个包含错误代码和描述该错误的字符串组成的双元素元组。在本例中,except子句会打印这些值,然后退出。

任何数据库有关的语句都可以放入类似的try/except结构中来收集和报告错误,为了简便起见,后面的讨论中不再显示异常处理代码。接下来介绍用于发送语句的方法。Animal.py接下来的代码将创建一个游标对象,并利用它发送设置和填充动物表的语句。这部分代码如下所示:需要注意的是,这里的代码没有包含错误检查。

CREATE TABLE animal  


 


(  


 


name CHAR(40),  


 


category CHAR(40)  


 


)本例中的表和一些语句取自于PEAR DB的说明文档。脚本animal.py的开头部分如下所示,从#!行可以看出它是打算运行于UNIX系统的:  


#!/usr/bin/python  


 


# animal.py - 创建动物表并从中检索信息  


 


import sys  





 



conn = MySQLdb.connect (host = "localhost",  



 



user = "testuser",  



 



passwd = "testpass",  



 



db = "test")  



 


except MySQLdb.Error, e:  


 


print "Error %d: %s" % (e.args[0], e.args[1])  


 


sys.exit (1)Except子句中的异常类MySQLdb.Error用于取得MySQLdb可以提供的具体数据库错误信息,而变量e则用来存放错误信息。


如果出现异常,MySQLdb会把有关信息存入e.args――这是一个包含错误代码和描述该错误的字符串组成的双元素元组。在本例中,except子句会打印这些值,然后退出。  


任何数据库有关的语句都可以放入类似的try/except结构中来收集和报告错误,



为了简便起见,后面的讨论中不再显示异常处理代码。  



接下来介绍用于发送语句的方法。Animal.py接下来的代码将创建一个游标对象,并利用它发送设置和填充动物表的语句。这部分代码如下所示:  



cursor = conn.cursor ()  



 


cursor.execute ("DROP TABLE IF EXISTS animal")  


 


cursor.execute ("""  


 


CREATE TABLE animal  


 


(  


 


name CHAR(40),  


 


category CHAR(40)  


 


)  


 


""")  


 


cursor.execute ("""  


 


INSERT INTO animal (name, category)  


 


VALUES  


 


('snake', 'reptile'),  


 


('frog', 'amphibian'),  


 


('tuna', 'fish'),  


 


('racoon', 'mammal')  


 


""")  


 


print "Number of rows inserted: %d" % cursor.rowcount 

请记住,Python异常处理可以放入try语句,这样一旦出错就会触发异常,继而被except子句所捕获并处理。但是考虑到代码的可读性,我们这里只给出了代码的主干部分。上面的语句将完成以下动作:
◆动物表已经存在,则丢弃它。
◆创建动物表。
◆向表中插入一些数据,并报告添加的行数。

这些语句都是通过调用游标对象的execute()方法发出的。其中前两个execute()语句不会生成数据,但是第三个语句将生成一个表示已经插入行数的统计量。这个统计数字存放在游标的rowcount属性中。有些数据库接口是通过execution运行调用的返回值来提供这个统计数字的,但是DB-API却不是这样。

相关推荐

laohyx / 0评论 2020-01-21