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

資訊專欄INFORMATION COLUMN

python學(xué)習(xí)筆記-錯誤處理

Joonas / 1914人閱讀

摘要:程序中的錯誤處理有多種方式,一類是約定好錯誤碼,然后根據(jù)返回的錯誤碼來判斷是否發(fā)生錯誤,以及錯誤的原因。比較成熟的做法是這一套錯誤處理機(jī)制。可以用來處理沒有的情況是無論有無錯誤都會執(zhí)行。

程序中的錯誤處理有多種方式,一類是約定好錯誤碼,然后根據(jù)返回的錯誤碼來判斷是否發(fā)生錯誤,以及錯誤的原因。

但是這么做容易將正確的返回值和錯誤碼混在一起,必須要寫很多代碼來區(qū)分,非常不方便。
另外一旦出錯,還需要一級一級往上報,知道有一級可以處理它。

比較成熟的做法是try...except...finally...這一套錯誤處理機(jī)制。該機(jī)制不會干擾正常的返回值。同時也無需一級一級手動上報,而是只需要有一級捕獲并處理即可。

代碼:

try:
    print open("Demo.py", "r")
    n = 1 / 0
except ZeroDivisionError, e:
    print "zeroDivisionError", e
except ValueError, e:
    print "ValueError", e
else:
    print "No Error catched"
finally:
    print "finally"

使用錯誤處理有幾個點(diǎn)需要注意:

可以寫多個except用于捕獲多個exception

父類exception可以捕獲子類的exception,已經(jīng)被捕獲的exception不會再被傳遞給其他exception。

可以用else來處理沒有exeption的情況

finally是無論有無錯誤都會執(zhí)行。

Build-in Exception的種類

Python(2.x)內(nèi)置Exception的繼承關(guān)系見下圖:

The class hierarchy for built-in exceptions is:
BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception
      +-- StopIteration
      +-- StandardError
      |    +-- BufferError
      |    +-- ArithmeticError
      |    |    +-- FloatingPointError
      |    |    +-- OverflowError
      |    |    +-- ZeroDivisionError
      |    +-- AssertionError
      |    +-- AttributeError
      |    +-- EnvironmentError
      |    |    +-- IOError
      |    |    +-- OSError
      |    |         +-- WindowsError (Windows)
      |    |         +-- VMSError (VMS)
      |    +-- EOFError
      |    +-- ImportError
      |    +-- LookupError
      |    |    +-- IndexError
      |    |    +-- KeyError
      |    +-- MemoryError
      |    +-- NameError
      |    |    +-- UnboundLocalError
      |    +-- ReferenceError
      |    +-- RuntimeError
      |    |    +-- NotImplementedError
      |    +-- SyntaxError
      |    |    +-- IndentationError
      |    |         +-- TabError
      |    +-- SystemError
      |    +-- TypeError
      |    +-- ValueError
      |         +-- UnicodeError
      |              +-- UnicodeDecodeError
      |              +-- UnicodeEncodeError
      |              +-- UnicodeTranslateError
      +-- Warning
           +-- DeprecationWarning
           +-- PendingDeprecationWarning
           +-- RuntimeWarning
           +-- SyntaxWarning
           +-- UserWarning
           +-- FutureWarning
       +-- ImportWarning
       +-- UnicodeWarning
       +-- BytesWarning

當(dāng)然我們也可以自定義一個類,例如:

class MyException(StandardException):
    pass

當(dāng)然,推薦使用Build-in的Exception。在Build-in的Exception中找不到我們所需要的Exception的時候,我們才自定義Exception。

拋出自定義Exception使用以下語法:

raise MyException("this is my Exception")
Exception的記錄

在測試代碼中,我們對Exception的處理中可以直接print exception。但是實(shí)際生產(chǎn)代碼中直接打印log可能不是很妥。我們可以通過簡單的配置使用logging.exception(msg)將錯誤打印到日志中。
如何正確使用python內(nèi)置的logging模塊,可以另開一篇文章介紹。

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

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

相關(guān)文章

  • head first python(第四章)–學(xué)習(xí)筆記

    showImg(http://source1.godblessyuan.com/blog_head_first_python_chapter_4_20150426.jpg); 其實(shí)持久存儲不僅僅包含文件,還包括數(shù)據(jù)庫等,本章先介紹一部分,先熟悉一下。 熟悉python數(shù)據(jù) #!/usr/bin/python # -*- coding: utf-8 -*- man = [] other =...

    venmos 評論0 收藏0
  • Python 3 學(xué)習(xí)筆記之——錯誤和異常

    摘要:異常即使程序的語法是正確的,但是在運(yùn)行的時候,也有可能發(fā)生錯誤,運(yùn)行期監(jiān)測到的錯誤稱為異常。此時可以打印出錯誤信息,然后再次把異常拋出。這個子句將在子句沒有發(fā)生任何異常的時候執(zhí)行。異常類繼承自,可以直接繼承,或者間接繼承。 1. 語法錯誤 Python 的語法錯誤被稱為解析錯,語法分析器會指出出錯的代碼行,并且在最先找到的錯誤的位置標(biāo)記一個小小的箭頭。 >>> while True ...

    techstay 評論0 收藏0
  • head first python(第三章)–學(xué)習(xí)筆記

    摘要:增加邏輯來處理首先通過觀察方法對于不同的數(shù)據(jù)返回的值是不同的。所以需要加一些標(biāo)記,標(biāo)識數(shù)據(jù)不符合期望的格式時會出現(xiàn)數(shù)據(jù)無法正常訪問時會出現(xiàn)。 1.介紹基礎(chǔ)文件,輸入,輸出 open() 打開文件,一次傳入一行數(shù)據(jù),可以結(jié)合for循環(huán)和readline()來使用 close() 用來關(guān)閉open打開的文件 the_file = open(sketch.txt) the_file....

    Shisui 評論0 收藏0
  • python學(xué)習(xí)筆記-python的調(diào)試

    摘要:但是在調(diào)試之后,我們還需要手動刪除語句,比較麻煩。關(guān)閉后,語句就不再生效。的好處有很多,一個是可以制定輸出特定級別的信息。我們可以用對進(jìn)行簡單的配置。小于該的都會被忽略。但是在處理很長的代碼的時候,顯得效率低下。 我們在寫代碼的時候,往往會有一大堆錯誤。我們該如何調(diào)試呢? 用print語句打印 我們可以用print語句打印我們想要的內(nèi)容,然后在輸出中查看。 print hah 但是在調(diào)...

    hufeng 評論0 收藏0
  • python學(xué)習(xí)筆記-定義函數(shù)

    摘要:空函數(shù)如果想要定義一個什么都不做的函數(shù),那么可以用語句。為函數(shù)添加參數(shù)檢查我們對作一些改寫。此時調(diào)用函數(shù)時傳入錯誤的參數(shù)則會拋出。函數(shù)返回多個值支持返回多個值。 python中定義函數(shù)的關(guān)鍵詞是def,例如定義一個叫my_function的函數(shù)我們可以這么定義, 其中括號內(nèi)的x,y為傳入的參數(shù)。 def my_function(): # function body 返回值 函數(shù)...

    CoderStudy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<