摘要:如果有一個異常程序沒有處理,那么將調用默認的處理器處理,并終止程序且給出提示。引發異常你可以用語句來引發一個異常。異常錯誤對象必須有一個名字,且它們應是或類的子類。參考資料凌風技術站異常機制講解
當你的程序中出現異常情況時就需要異常處理。比如當你打開一個不存在的文件時。當你的程序中有一些無效的語句時,Python會提示你有錯誤存在。
下面是一個拼寫錯誤的例子,print寫成了Print。Python是大小寫敏感的,因此Python將引發一個錯誤:
Print "Hello World" File "", line 1 Print "Hello World" ^ SyntaxError: invalid syntax >>> print "Hello World" Hello World
1、try...except語句
try...except語句可以用于捕捉并處理錯誤。通常的語句放在try塊中,錯誤處理語句放在except塊中。示例如下:
#!/usr/bin/python # Filename: try_except.py import sys try: s = raw_input("Enter something --> ") except EOFError:#處理EOFError類型的異常 print "/nWhy did you do an EOF on me?" sys.exit() # 退出程序 except:#處理其它的異常 print "/nSome error/exception occurred." print "Done"
運行輸出如下:
$ python try_except.py Enter something --> Why did you do an EOF on me? $ python try_except.py Enter something --> Python is exceptional! Done
說明:每個try語句都必須有至少一個except語句。如果有一個異常程序沒有處理,那么Python將調用默認的處理器處理,并終止程序且給出提示。
2、引發異常
你可以用raise語句來引發一個異常。異常/錯誤對象必須有一個名字,且它們應是Error或Exception類的子類。
下面是一個引發異常的例子:
#!/usr/bin/python #文件名: raising.py class ShortInputException(Exception): """你定義的異常類。""" def __init__(self, length, atleast): Exception.__init__(self) self.length = length self.atleast = atleast try: s = raw_input("請輸入 --> ") if len(s) < 3: raise ShortInputException(len(s), 3) # raise引發一個你定義的異常 except EOFError: print "/n你輸入了一個結束標記EOF" except ShortInputException, x:#x這個變量被綁定到了錯誤的實例 print "ShortInputException: 輸入的長度是 %d, / 長度至少應是 %d" % (x.length, x.atleast) else: print "沒有異常發生."
運行輸出如下:
$ python raising.py 請輸入 --> 你輸入了一個結束標記EOF $ python raising.py 請輸入 --> --> ab ShortInputException: 輸入的長度是 2, 長度至少應是 3 $ python raising.py 請輸入 --> abc 沒有異常發生.
3、try...finally語句
當你正在讀文件或還未關閉文件時發生了異常該怎么辦呢?你應該使用try...finally語句以釋放資源。示例如下:
#!/usr/bin/python # Filename: finally.py import time try: f = file("poem.txt") while True: # 讀文件的一般方法 line = f.readline() if len(line) == 0: break time.sleep(2)#每隔兩秒輸出一行 print line, finally: f.close() print "Cleaning up...closed the file"
運行輸出如下:
$ python finally.py Programming is fun When the work is done Cleaning up...closed the file Traceback (most recent call last): File "finally.py", line 12, in ? time.sleep(2) KeyboardInterrupt
說明:我們在兩秒這段時間內按下了Ctrl-c,這將產生一個KeyboardInterrupt異常,我們并沒有處理這個異常,那么Python將調用默認的處理器,并終止程序,在程序終止之前,finally塊中的語句將執行。
參考資料:
CSDN
凌風技術站pythoon異常機制講解
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44306.html
摘要:起步的提供一系列和屬性訪問有關的特殊方法。本文闡述它們的區別和用法。屬性的訪問機制一般情況下,屬性訪問的默認行為是從對象的字典中獲取,并當獲取不到時會沿著一定的查找鏈進行查找。則這個類的對象稱為描述符。 起步 python的提供一系列和屬性訪問有關的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ 。本文闡述它們的區別和用...
摘要:在這里我分享下我個人入門機器學習的經歷,希望能對大家能有所幫助。相關學習鏈接,,入門后的體驗在入門了機器學習之后,在實際工作中,絕大多數的情況下你并不需要去創造一個新的算法。 機器學習在很多眼里就是香餑餑,因為機器學習相關的崗位在當前市場待遇不錯,但同時機器學習在很多人面前又是一座大山,因為發現它太難學了。在這里我分享下我個人入門機器學習的經歷,希望能對大家能有所幫助。 PS:這篇文章...
閱讀 1499·2021-11-24 11:16
閱讀 2709·2021-07-28 12:32
閱讀 2313·2019-08-30 11:22
閱讀 1455·2019-08-30 11:01
閱讀 610·2019-08-29 16:24
閱讀 3556·2019-08-29 12:52
閱讀 1635·2019-08-29 12:15
閱讀 1346·2019-08-29 11:18