国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

python異常機(jī)制個(gè)人理解(參考網(wǎng)上資料)

CastlePeaK / 1317人閱讀

摘要:如果有一個(gè)異常程序沒(méi)有處理,那么將調(diào)用默認(rèn)的處理器處理,并終止程序且給出提示。引發(fā)異常你可以用語(yǔ)句來(lái)引發(fā)一個(gè)異常。異常錯(cuò)誤對(duì)象必須有一個(gè)名字,且它們應(yīng)是或類(lèi)的子類(lèi)。參考資料凌風(fēng)技術(shù)站異常機(jī)制講解

當(dāng)你的程序中出現(xiàn)異常情況時(shí)就需要異常處理。比如當(dāng)你打開(kāi)一個(gè)不存在的文件時(shí)。當(dāng)你的程序中有一些無(wú)效的語(yǔ)句時(shí),Python會(huì)提示你有錯(cuò)誤存在。
下面是一個(gè)拼寫(xiě)錯(cuò)誤的例子,print寫(xiě)成了Print。Python是大小寫(xiě)敏感的,因此Python將引發(fā)一個(gè)錯(cuò)誤:

 Print "Hello World"
 File "", line 1
      Print "Hello World"
                        ^
SyntaxError: invalid syntax

>>> print "Hello World"
Hello World

1、try...except語(yǔ)句
try...except語(yǔ)句可以用于捕捉并處理錯(cuò)誤。通常的語(yǔ)句放在try塊中,錯(cuò)誤處理語(yǔ)句放在except塊中。示例如下:

#!/usr/bin/python
# Filename: try_except.py

import sys
try:
    s = raw_input("Enter something --> ")
except EOFError:#處理EOFError類(lèi)型的異常
    print "/nWhy did you do an EOF on me?"
    sys.exit() # 退出程序
except:#處理其它的異常
    print "/nSome error/exception occurred."
    
print "Done"

運(yùn)行輸出如下:

$ python try_except.py
Enter something -->
Why did you do an EOF on me?

$ python try_except.py
Enter something --> Python is exceptional!
Done

說(shuō)明:每個(gè)try語(yǔ)句都必須有至少一個(gè)except語(yǔ)句。如果有一個(gè)異常程序沒(méi)有處理,那么Python將調(diào)用默認(rèn)的處理器處理,并終止程序且給出提示。
2、引發(fā)異常
你可以用raise語(yǔ)句來(lái)引發(fā)一個(gè)異常。異常/錯(cuò)誤對(duì)象必須有一個(gè)名字,且它們應(yīng)是Error或Exception類(lèi)的子類(lèi)。
下面是一個(gè)引發(fā)異常的例子:

#!/usr/bin/python
#文件名: raising.py

class ShortInputException(Exception):
    """你定義的異常類(lèi)。"""
    def __init__(self, length, atleast):
        Exception.__init__(self)
        self.length = length
        self.atleast = atleast

try:
    s = raw_input("請(qǐng)輸入 --> ")
    if len(s) < 3:
        raise ShortInputException(len(s), 3)
    # raise引發(fā)一個(gè)你定義的異常
except EOFError:
    print "/n你輸入了一個(gè)結(jié)束標(biāo)記EOF"
except ShortInputException, x:#x這個(gè)變量被綁定到了錯(cuò)誤的實(shí)例
    print "ShortInputException: 輸入的長(zhǎng)度是 %d, /
        長(zhǎng)度至少應(yīng)是 %d" % (x.length, x.atleast)
else:
    print "沒(méi)有異常發(fā)生."

運(yùn)行輸出如下:

$ python raising.py
請(qǐng)輸入 -->
你輸入了一個(gè)結(jié)束標(biāo)記EOF

$ python raising.py
請(qǐng)輸入 --> --> ab
ShortInputException: 輸入的長(zhǎng)度是 2, 長(zhǎng)度至少應(yīng)是 3

$ python raising.py
請(qǐng)輸入 --> abc
沒(méi)有異常發(fā)生.

3、try...finally語(yǔ)句
當(dāng)你正在讀文件或還未關(guān)閉文件時(shí)發(fā)生了異常該怎么辦呢?你應(yīng)該使用try...finally語(yǔ)句以釋放資源。示例如下:

#!/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"

運(yùn)行輸出如下:

$ 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

說(shuō)明:我們?cè)趦擅脒@段時(shí)間內(nèi)按下了Ctrl-c,這將產(chǎn)生一個(gè)KeyboardInterrupt異常,我們并沒(méi)有處理這個(gè)異常,那么Python將調(diào)用默認(rèn)的處理器,并終止程序,在程序終止之前,finally塊中的語(yǔ)句將執(zhí)行。

參考資料:
CSDN

凌風(fēng)技術(shù)站pythoon異常機(jī)制講解

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44306.html

相關(guān)文章

  • PHP小知識(shí)點(diǎn)

    摘要:那些瑣碎的知識(shí)點(diǎn)作者記錄的的很奇特很難記的知識(shí)點(diǎn)。易錯(cuò)知識(shí)點(diǎn)整理注意和的區(qū)別中和都是輸出的作用,但是兩者之間還是有細(xì)微的差別。今天手頭不忙,總結(jié)一下,分享過(guò)程中掌握的知識(shí)點(diǎn)。 深入理解 PHP 之:Nginx 與 FPM 的工作機(jī)制 這篇文章從 Nginx 與 FPM 的工作機(jī)制出發(fā),探討配置背后的原理,讓我們真正理解 Nginx 與 PHP 是如何協(xié)同工作的。 PHP 那些瑣碎的知識(shí)...

    hover_lew 評(píng)論0 收藏0
  • Python中幾種屬性訪問(wèn)的區(qū)別

    摘要:起步的提供一系列和屬性訪問(wèn)有關(guān)的特殊方法。本文闡述它們的區(qū)別和用法。屬性的訪問(wèn)機(jī)制一般情況下,屬性訪問(wèn)的默認(rèn)行為是從對(duì)象的字典中獲取,并當(dāng)獲取不到時(shí)會(huì)沿著一定的查找鏈進(jìn)行查找。則這個(gè)類(lèi)的對(duì)象稱(chēng)為描述符。 起步 python的提供一系列和屬性訪問(wèn)有關(guān)的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ 。本文闡述它們的區(qū)別和用...

    zhouzhou 評(píng)論0 收藏0
  • 我是如何入門(mén)機(jī)器學(xué)習(xí)的呢

    摘要:在這里我分享下我個(gè)人入門(mén)機(jī)器學(xué)習(xí)的經(jīng)歷,希望能對(duì)大家能有所幫助。相關(guān)學(xué)習(xí)鏈接,,入門(mén)后的體驗(yàn)在入門(mén)了機(jī)器學(xué)習(xí)之后,在實(shí)際工作中,絕大多數(shù)的情況下你并不需要去創(chuàng)造一個(gè)新的算法。 機(jī)器學(xué)習(xí)在很多眼里就是香餑餑,因?yàn)闄C(jī)器學(xué)習(xí)相關(guān)的崗位在當(dāng)前市場(chǎng)待遇不錯(cuò),但同時(shí)機(jī)器學(xué)習(xí)在很多人面前又是一座大山,因?yàn)榘l(fā)現(xiàn)它太難學(xué)了。在這里我分享下我個(gè)人入門(mén)機(jī)器學(xué)習(xí)的經(jīng)歷,希望能對(duì)大家能有所幫助。 PS:這篇文章...

    ShowerSun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<