摘要:如果有一個異常程序沒有處理,那么將調(diào)用默認的處理器處理,并終止程序且給出提示。引發(fā)異常你可以用語句來引發(fā)一個異常。異常錯誤對象必須有一個名字,且它們應(yīng)是或類的子類。參考資料凌風技術(shù)站異常機制講解
當你的程序中出現(xiàn)異常情況時就需要異常處理。比如當你打開一個不存在的文件時。當你的程序中有一些無效的語句時,Python會提示你有錯誤存在。
下面是一個拼寫錯誤的例子,print寫成了Print。Python是大小寫敏感的,因此Python將引發(fā)一個錯誤:
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將調(diào)用默認的處理器處理,并終止程序且給出提示。
2、引發(fā)異常
你可以用raise語句來引發(fā)一個異常。異常/錯誤對象必須有一個名字,且它們應(yīng)是Error或Exception類的子類。
下面是一個引發(fā)異常的例子:
#!/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引發(fā)一個你定義的異常 except EOFError: print "/n你輸入了一個結(jié)束標記EOF" except ShortInputException, x:#x這個變量被綁定到了錯誤的實例 print "ShortInputException: 輸入的長度是 %d, / 長度至少應(yīng)是 %d" % (x.length, x.atleast) else: print "沒有異常發(fā)生."
運行輸出如下:
$ python raising.py 請輸入 --> 你輸入了一個結(jié)束標記EOF $ python raising.py 請輸入 --> --> ab ShortInputException: 輸入的長度是 2, 長度至少應(yīng)是 3 $ python raising.py 請輸入 --> abc 沒有異常發(fā)生.
3、try...finally語句
當你正在讀文件或還未關(guān)閉文件時發(fā)生了異常該怎么辦呢?你應(yīng)該使用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
說明:我們在兩秒這段時間內(nèi)按下了Ctrl-c,這將產(chǎn)生一個KeyboardInterrupt異常,我們并沒有處理這個異常,那么Python將調(diào)用默認的處理器,并終止程序,在程序終止之前,finally塊中的語句將執(zhí)行。
參考資料:
CSDN
凌風技術(shù)站pythoon異常機制講解
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44306.html
摘要:起步的提供一系列和屬性訪問有關(guān)的特殊方法。本文闡述它們的區(qū)別和用法。屬性的訪問機制一般情況下,屬性訪問的默認行為是從對象的字典中獲取,并當獲取不到時會沿著一定的查找鏈進行查找。則這個類的對象稱為描述符。 起步 python的提供一系列和屬性訪問有關(guān)的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ 。本文闡述它們的區(qū)別和用...
摘要:在這里我分享下我個人入門機器學(xué)習的經(jīng)歷,希望能對大家能有所幫助。相關(guān)學(xué)習鏈接,,入門后的體驗在入門了機器學(xué)習之后,在實際工作中,絕大多數(shù)的情況下你并不需要去創(chuàng)造一個新的算法。 機器學(xué)習在很多眼里就是香餑餑,因為機器學(xué)習相關(guān)的崗位在當前市場待遇不錯,但同時機器學(xué)習在很多人面前又是一座大山,因為發(fā)現(xiàn)它太難學(xué)了。在這里我分享下我個人入門機器學(xué)習的經(jīng)歷,希望能對大家能有所幫助。 PS:這篇文章...
閱讀 1498·2021-11-24 11:16
閱讀 2706·2021-07-28 12:32
閱讀 2312·2019-08-30 11:22
閱讀 1452·2019-08-30 11:01
閱讀 608·2019-08-29 16:24
閱讀 3554·2019-08-29 12:52
閱讀 1635·2019-08-29 12:15
閱讀 1344·2019-08-29 11:18