python中異常處理之esle,except,else


異常是指程序中的例外,違例情況。異常機制是指程序出現錯誤后,程序的處理方法。當出現錯誤后,程序的執行流程發生改變,程序的控制權轉移到異常處理。

python中使用try...except語句捕獲異常,異常子句定義在try子句后面。try子句中的代碼塊放置可能出現異常的語句,except子句中的代碼塊處理異常,加上else和return語句,便可用來判斷某段代碼是否正常運行,將結果返回。

舉個栗子:

try:
     file("hello.txt", "r")                  #如果文件不存在,引發異常
     print "讀文件"
except IOError:                              #捕獲IO異常
     print "文件不存在"
except#其它異常
     print "程序異常" 

try也可加上finally語句,finally語句表示無論結果是什么,都執行此語句。栗子:

try:
     f = open("hello.txt", "r")
     try:
          print f.read(5)
     except:
          print "讀文件異常"
     finally:
          print "釋放資源"
          f.close()
except IOError:
     print "文件不存在"

舉個實際中使用的例子吧,程序中要求用戶input字符串,字符串是一個嵌套的字典,通過json解讀字符串並從中取值。所以,如果不符合要求的字符串在處理過程中就會報錯導致中斷,那就需要牛掰的try...except...else選手出場了,下面的代碼:

#定義確認用戶輸入格式是否為ha配置文件所需格式函數
def enter_query(add_contect_str):
    """
    :param add_contect_str: 用戶選擇修改配置文件后,輸入的格式必須為字典
    :return: Flase=用戶輸入格式不正確  True=用戶輸入格式正確
    """
    try:    #嘗試將用戶輸入字符串轉化為列表,並給變量賦值
        add_contect=json.loads(add_contect_str)
        search_info=add_contect['backend']
        weight=add_contect['record']['weight']
        server=add_contect['record']['server']
        maxconn=add_contect['record']['maxconn']
    except: #如果異常,return 值為False
        return False
    else:   #如果無報錯,return 值為False
        return True

這樣一個函數,把return值傳給后面的代碼,即使輸入格式錯誤,直接print("格式錯誤")提示用戶就行啦,從而避免了程序中斷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM