python掃盲之七-異常處理

python掃盲之七-異常處理

所謂異常處理,是程序世界裡又一個非常常用的代碼功能之一,咱們想象一下這樣一種場景,你辛辛苦苦編寫了幾千行代碼,發佈,上線。但其中某一段代碼由於邏輯問題,導致出現報錯,程序崩潰了。又或者一段代碼中判斷的條件可能本身就有可能會引發錯誤的那麼這段邏輯要怎麼寫 if套用if套用if。。。。

所以python 提供了一個非常牛叉的異常處理函數,來處理python程序在運行中出現的異常和錯誤。

基本語法

try:#運行別的代碼except:#如果在try部份引發了'name'異常except,:#如果引發了'name'異常,獲得附加的數據else:#如果沒有異常發生執行這裡其中的‘名字’部分,是你想要捕捉的錯誤代碼。例如 fh = open("test.log","r")IOError:[Errno2]No such file or directory:'test.log'這個錯誤代碼就是IOError。

實例

#!/usr/bin/python# -*- coding: UTF-8 -*-#我們拿上一篇中講到的open方法來演示一下try: fh = open("test.log","r") fh.read()exceptIOError:print"Error: 沒有找到文件或讀取文件失敗"else:print"讀到了內容" fh.close()執行:Error:沒有找到文件或讀取文件失敗輸出了這樣的結果。如果我們沒用使用異常處理呢?#!/usr/bin/python# -*- coding: UTF-8 -*-#我們拿上一篇中講到的open方法來演示一下fh = open("test.log","r")fh.read()執行Traceback(most recent call last):File"F:/PycharmProjects/untitled3/ddd.py", line 5,in 
fh = open("test.log","r")IOError:[Errno2]No such file or directory:'test.log'Process finished with exit code 1報錯很難看。。

我們再看一個例子

#!/usr/bin/python# -*- coding: UTF-8 -*-#我們拿上一篇中講到的open方法來演示一下try: fh = open("test.log","r") fh.read()exceptIOError:print"Error: 沒有找到文件或讀取文件失敗"else:print"讀到了內容" fh.close()print'繼續執行吧'執行Error:沒有找到文件或讀取文件失敗繼續執行吧#不用異常處理呢?#!/usr/bin/python# -*- coding: UTF-8 -*-#我們拿上一篇中講到的open方法來演示一下fh = open("test.log","r")fh.read()print'繼續執行吧'執行Traceback(most recent call last):File"F:/PycharmProjects/untitled3/ddd.py", line 5,in fh = open("test.log","r")IOError:[Errno2]No such file or directory:'test.log'通過上面兩段代碼的對比可以發現,在使用了異常處理函數的時候,如果報錯在我們設定範圍內,及時是報錯了程序也會繼續執行。

上面幾個小例子簡單描述了一下異常處理的使用方法。先小小總結一下,異常處理是為了捕獲我們提前設定好的錯誤,來處理或者跳過。

下面說一下它的另一個語法形式

try:finally: #try語句無論是否發生異常都將執行這段代碼

這個咱們就不實例講解了,也非常的簡單,有興趣的童鞋自己試一下

使用場景

關於異常處理的使用,很多新手程序員可能體會不深,因為你的代碼量相對來說少一些,體會不到大型複雜程序報錯之後的痛苦。

#看一段代碼,假如你在編寫一個被用戶訪問的web接口,你約定了用戶需要給你返回的是這樣的數據{'k1':1,'k2':2}。現在你需要從裡面提取數據。request ={'k1':1,'k2':2}print request['k1']print request['k2']ok 這樣子看似沒有問題。好了突然有一天,一個用戶給你傳了這樣的數據,{'k1':1,'k3':2},然後你還是按照原來的方式處理request ={'k1':1,'k3':2}print request['k1']print request['k2']這會發生什麼?print request['k2']KeyError:'k2'報錯。導致你的程序異常退出了。這時候你需要的就是異常處理功能了。我們改寫一下request ={'k1':1,'k3':2}try:print request['k1']print request['k2']exceptKeyError,e:print'你大爺,你給我傳的數據不對!!'這樣處理之後,首先不會導致你的程序因為異常退出。其次這也是一種檢驗對方給你數據是否正確的方式,當然這只是個例子我們不建議這樣來檢驗數據正確性的。

關於異常處理,咱們就講這麼多,雖然本博文沒有講解到很深入的東西。但是足夠你入門了。入門為主,修行在後。學習要一點一點來。

歡迎加入我們python自學交流群:460146436


分享到:


相關文章: