自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何掌握Python異常處理問(wèn)題

開(kāi)發(fā) 后端
上回在進(jìn)行對(duì)Python語(yǔ)言進(jìn)行編制的時(shí)候,突然彈出了個(gè)對(duì)話框,上面寫(xiě)著PythonPython異常處理問(wèn)題請(qǐng)及時(shí)關(guān)閉,這個(gè)是什么原因?。?/div>

想要充分的掌握Python異常處理這門(mén)知識(shí),那么就要對(duì)Python語(yǔ)言中的結(jié)構(gòu)、語(yǔ)句、變量、函數(shù)、預(yù)處理指令、輸入和輸出等內(nèi)容進(jìn)行了解掌握,這樣才可以輕輕松松的進(jìn)行Python異常處理問(wèn)題地解決。

下面介紹Python異常處理。導(dǎo)入必要的模塊之后,animal.py使用connect()調(diào)用建立到服務(wù)器的連接。為了處理連接故障,比如,顯示故障的原因,該腳本必須捕捉異常。在Python語(yǔ)言中,為了處理異常,必須把代碼放到try語(yǔ)句中,并且包括一個(gè)except子句來(lái)包含錯(cuò)誤處理代碼。生成的連接的代碼如下所示:

  1. try:  
  2.  
  3.   conn = MySQLdb.connect (host = "localhost",  
  4.  
  5.   user = "testuser",  
  6.  
  7.   passwd = "testpass",  
  8.  
  9.   db = "test")  
  10.  
  11.   except MySQLdb.Error, e:  
  12.  
  13.   print "Error %d: %s" % (e.args[0], e.args[1])  
  14.  
  15.   sys.exit (1) 

Except子句中的異常類MySQLdb.Error用于取得MySQLdb可以提供的具體數(shù)據(jù)庫(kù)錯(cuò)誤信息,而變量e則用來(lái)存放錯(cuò)誤信息。如果出現(xiàn)異常,MySQLdb會(huì)把有關(guān)信息存入e.args——這是一個(gè)包含錯(cuò)誤代碼和描述該錯(cuò)誤的字符串組成的雙元素元組。在本例中,except子句會(huì)打印這些值,然后退出。

任何數(shù)據(jù)庫(kù)有關(guān)的語(yǔ)句都可以放入類似的try/except結(jié)構(gòu)中來(lái)收集和報(bào)告錯(cuò)誤,為了簡(jiǎn)便起見(jiàn),后面的討論中不再顯示異常處理代碼。接下來(lái)介紹用于發(fā)送語(yǔ)句的方法。Animal.py接下來(lái)的代碼將創(chuàng)建一個(gè)游標(biāo)對(duì)象,并利用它發(fā)送設(shè)置和填充動(dòng)物表的語(yǔ)句。這部分代碼如下所示:需要注意的是,這里的代碼沒(méi)有包含錯(cuò)誤檢查。

  1. CREATE TABLE animal  
  2.  
  3.   (  
  4.  
  5.   name CHAR(40),  
  6.  
  7.   category CHAR(40)  
  8.  
  9.   )  本例中的表和一些語(yǔ)句取自于PEAR DB的說(shuō)明文檔。腳本animal.py的開(kāi)頭部分如下所示,從#!行可以看出它是打算運(yùn)行于UNIX系統(tǒng)的:  
  10.   #!/usr/bin/python  
  11.  
  12.   # animal.py - 創(chuàng)建動(dòng)物表并從中檢索信息  
  13.  
  14.   import sys  
  15.  
  16.   conn = MySQLdb.connect (host = "localhost",  
  17.  
  18.   user = "testuser",  
  19.  
  20.   passwd = "testpass",  
  21.  
  22.   db = "test")  
  23.  
  24.   except MySQLdb.Error, e:  
  25.  
  26.   print "Error %d: %s" % (e.args[0], e.args[1])  
  27.  
  28. sys.exit (1)  Except子句中的異常類MySQLdb.Error用于取得MySQLdb可以提供的具體數(shù)據(jù)庫(kù)錯(cuò)誤信息,而變量e則用來(lái)存放錯(cuò)誤信息。
  29. 如果出現(xiàn)異常,MySQLdb會(huì)把有關(guān)信息存入e.args——這是一個(gè)包含錯(cuò)誤代碼和描述該錯(cuò)誤的字符串組成的雙元素元組。在本例中,except子句會(huì)打印這些值,然后退出。  
  30. 任何數(shù)據(jù)庫(kù)有關(guān)的語(yǔ)句都可以放入類似的try/except結(jié)構(gòu)中來(lái)收集和報(bào)告錯(cuò)誤,
  31. 為了簡(jiǎn)便起見(jiàn),后面的討論中不再顯示異常處理代碼。  
  32. 接下來(lái)介紹用于發(fā)送語(yǔ)句的方法。Animal.py接下來(lái)的代碼將創(chuàng)建一個(gè)游標(biāo)對(duì)象,并利用它發(fā)送設(shè)置和填充動(dòng)物表的語(yǔ)句。這部分代碼如下所示:  
  33.   cursor = conn.cursor ()  
  34.  
  35.   cursor.execute ("DROP TABLE IF EXISTS animal")  
  36.  
  37.   cursor.execute ("""  
  38.  
  39.   CREATE TABLE animal  
  40.  
  41.   (  
  42.  
  43.   name CHAR(40),  
  44.  
  45.   category CHAR(40)  
  46.  
  47.   )  
  48.  
  49.   """)  
  50.  
  51.   cursor.execute ("""  
  52.  
  53.   INSERT INTO animal (name, category)  
  54.  
  55.   VALUES  
  56.  
  57.   ('snake', 'reptile'),  
  58.  
  59.   ('frog', 'amphibian'),  
  60.  
  61.   ('tuna', 'fish'),  
  62.  
  63.   ('racoon', 'mammal')  
  64.  
  65.   """)  
  66.  
  67.   print "Number of rows inserted: %d" % cursor.rowcount 

請(qǐng)記住,Python異常處理可以放入try語(yǔ)句,這樣一旦出錯(cuò)就會(huì)觸發(fā)異常,繼而被except子句所捕獲并處理。但是考慮到代碼的可讀性,我們這里只給出了代碼的主干部分。上面的語(yǔ)句將完成以下動(dòng)作:
◆動(dòng)物表已經(jīng)存在,則丟棄它。
◆創(chuàng)建動(dòng)物表。
◆向表中插入一些數(shù)據(jù),并報(bào)告添加的行數(shù)。

這些語(yǔ)句都是通過(guò)調(diào)用游標(biāo)對(duì)象的execute()方法發(fā)出的。其中前兩個(gè)execute()語(yǔ)句不會(huì)生成數(shù)據(jù),但是第三個(gè)語(yǔ)句將生成一個(gè)表示已經(jīng)插入行數(shù)的統(tǒng)計(jì)量。這個(gè)統(tǒng)計(jì)數(shù)字存放在游標(biāo)的rowcount屬性中。有些數(shù)據(jù)庫(kù)接口是通過(guò)execution運(yùn)行調(diào)用的返回值來(lái)提供這個(gè)統(tǒng)計(jì)數(shù)字的,但是DB-API卻不是這樣。

此動(dòng)物表已經(jīng)建好,所以我們可以發(fā)出選擇指令來(lái)從中檢索信息了。如同前面的語(yǔ)句一樣,SELECT語(yǔ)句也要使用execute()方法發(fā)出。然而,與DROP或者INSERT語(yǔ)句不同的是,SELECT語(yǔ)句會(huì)生成一個(gè)結(jié)果集合,也就是說(shuō),execute()僅僅發(fā)出語(yǔ)句,但是卻沒(méi)有返回結(jié)果集合。

我們可以使用fetchone()方法每次返回一行數(shù)據(jù),或者使用fetchall()方法一次全部搞定。在animal.py中,這兩者方法都用到了。下面是如何使用fetchone()每次檢索一行數(shù)據(jù)的方法。

責(zé)任編輯:chenqingxiang 來(lái)源: 博客園
相關(guān)推薦

2010-03-01 14:40:00

Python RSS處

2010-01-12 17:26:37

C++編譯器

2014-02-19 09:51:29

iOS開(kāi)發(fā)時(shí)間處理

2018-09-18 23:32:35

物聯(lián)網(wǎng)污水處理IOT

2010-05-17 14:59:05

MySQL事務(wù)處理

2011-04-06 10:27:46

Java異常處理

2016-11-14 10:06:04

大數(shù)據(jù)max位圖

2009-11-05 12:45:25

WCF異常

2009-02-25 10:34:57

異常處理體系Python

2023-10-10 13:23:18

空指針異常Java

2022-04-24 16:29:28

千年蟲(chóng)時(shí)間計(jì)算機(jī)系統(tǒng)

2019-09-20 08:38:51

Python編程語(yǔ)言Java

2025-02-05 10:02:03

Locust測(cè)試異常處理

2022-05-12 23:38:19

SQL數(shù)據(jù)庫(kù)字符串

2021-03-10 18:26:49

Tensorflow語(yǔ)音識(shí)別音頻處理

2019-01-24 16:11:19

前端全局異常數(shù)據(jù)校驗(yàn)

2023-08-25 08:35:58

Rest方法字符串

2013-08-22 17:10:09

.Net異常處理

2012-12-21 10:48:20

Java異常

2010-01-27 15:29:45

C++異常處理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)