異常處理sql
異常處理是爲了讓程序出錯後,既能捕獲到異常,又不影響程序運行。數據庫
異常處理的關鍵字是【try...except...finally...】,即先要考慮到這段代碼可能會出現什麼樣的錯誤,而後作對應的處理,spa
try裏面就是包含你作處理的代碼,except裏面就是出了某種錯誤的時候,怎麼去處理,finally裏面是無論出不出異常,code
都處理這裏的代碼;還有一個else,就是不出異常時如何處理。對象
下面是一個異常處理的例子blog
1 def exc(a,b): 2 try: 3 c=a/b 4 except Exception as e: 5 print('出錯了,全部類型錯誤,錯誤是%s' %e) 6 except KeyError as e: 7 print('Key出錯了') 8 else: 9 print('這裏沒有出錯') 10 return c 11 finally: 12 print('出沒沒錯咱都走這裏,多用於數據庫關閉')
常見的異常信息索引
1 AttributeError: 試圖訪問一個對象沒有的屬性,好比foo.x,可是foo沒有屬性x 2 3 IOError:輸入/輸出異常,通常是沒法打開文件 4 5 ImportError: 沒法導入模塊或包,通常是路徑問題或名稱錯誤 6 7 IndentationError:代碼沒有正確對齊,屬於語法錯誤 8 9 IndexError:下標索引超出序列邊界,好比x只有三個元素,卻試圖訪問x[3] 10 11 KeyError:試圖訪問字典裏不存在的鍵 12 13 KeyboardInterrupt:Ctrl+C被按下 14 15 NameError:使用一個還未被賦予對象的變量 16 17 SyntaxError: 語法錯誤 18 19 TypeError: 傳入對象類型與要求的不符 20 21 UnboundLocalError:試圖訪問一個還未被設置的局部變量,通常是因爲在代碼塊外部還有另外一個同名變量 22 23 ValueError: 傳入一個調用者不指望的值,即便值的類型是正確的
主動拋出異常it
有時程序須要咱們主動拋出異常,此時須要使用【raise】來完成.io
1 def is_corrent_sql(sql): 2 #select insert delete update 3 sql_start=['select','insert','delete','update'] 4 for start in sql_start: 5 if sql.startswith(start): 6 pass 7 else: 8 raise TypeError #主動拋出異常,自定義異常 9 is_corrent_sql('sss')