日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > Python之異常處理

Python之異常處理

來源:程序員人生   發(fā)布時間:2015-05-22 08:40:40 閱讀次數(shù):3135次

1、甚么是異常?
異常即是1個事件,該事件會在程序履行進程中產(chǎn)生,影響了程序的正常履行。
1般情況下,在Python沒法正常處理程序時就會產(chǎn)生1個異常。
異常是Python對象,表示1個毛病。
當Python腳本產(chǎn)生異常時我們需要捕獲處理它,否則程序會終止履行。
2、異常處理
捕捉異??墒褂胻ry/except語句。
try/except語句用來檢測try語句塊中的毛病,從而讓except語句捕獲異常信息并處理。
如果你不想在異常產(chǎn)生時結(jié)束你的程序,只需在try里捕獲它。

異常語法:
以下為簡單的try....except...else的語法:

try:
<語句>        #運行別的代碼
except <名字>:
<語句>        #如果在try部分引發(fā)了'name'異常
except <名字>,<數(shù)據(jù)>:
<語句>        #如果引發(fā)了'name'異常,取得附加的數(shù)據(jù)
else:
<語句>        #如果沒有異常產(chǎn)生


try的工作原理是,當開始1個try語句后,python就在當前程序的上下文中作標記,這樣當異常出現(xiàn)時就能夠回到這里,try子句先履行,接下來會產(chǎn)生甚么依賴于履行時是不是出現(xiàn)異常。



try...except的使用方法

try...except用于處理問題語句,捕獲可能出現(xiàn)的異常。try子句中的代碼塊放置可能出現(xiàn)異常的語句,except子句中的代碼塊處理異常。
演示try...except語句捕獲IOError異常
try:
     file("hello.txt", "r")                  #如果文件不存在,引發(fā)異常
     print "讀文件"
except IOError:                              #捕獲IO異常
     print "文件不存在"
except:                                     #其它異常
     print "程序異常" 

python與Java的異常處理模式相似,異常處理語句也能夠嵌套,演示以下:
try:
     s = "hello"
     try:
          print s[0] + s[1]
          print s[0] - s[1]
     except TypeError:
          print "字符串不支持減法運算"
except:
     print "異常"
如果外層try子句中的代碼引發(fā)異常,程序?qū)⒅苯犹D(zhuǎn)到外層try對應(yīng)的except子句,而內(nèi)部的try子句將不會被履行。

try...finally的使用方法
try...except后還可以添加1個finally子句。不管異常是不是產(chǎn)生,finally子句都會被履行。所有的finally子句通經(jīng)常使用于關(guān)閉因異常而不能釋放的系統(tǒng)資源。
try:
     f = open("hello.txt", "r")
     try:
          print f.read(5)
     except:
          print "讀文件異常"
     finally:
          print "釋放資源"
          f.close()
except IOError:
     print "文件不存在"

使用raise拋出異常
當程序出現(xiàn)毛病,python會自動引發(fā)異常,也能夠通過raise顯示地引發(fā)異常。1旦履行了raise語句,raise后面的語句將不能履行。
演示raise用法
try:
     s = None
     if s is None:
         print "s 是空對象"
         raise NameError     #如果引發(fā)NameError異常,后面的代碼將不能履行
     print len(s)
except TypeError:
     print "空對象沒有長度"

自定義異常
python允許程序員自定義異常,用于描寫python中沒有觸及的異常情況,自定義異常必須繼承Exception類,自定義異常依照命名規(guī)范以"Error"結(jié)尾,顯示地告知程序員這是異常。自定義異常使用raise語句引發(fā),而且只能通過人工方式觸發(fā)。
from __future__ import division

class DivisionException(Exception):
      def __init__(self, x, y):
            Exception.__init__ (self, x, y)       #調(diào)用基類的__init__進行初始化
            self.x = x
            self.y = y

if __name__ == "__main__":
      try:
            x = 3
            y = 2
      if x % y > 0:                               #如果大于0, 則不能被初始化,拋出異常
            print x/y
            raise DivisionException(x, y)
except DivisionException,div:                     #div 表示DivisionException的實例對象
      print "DivisionExcetion: x/y = %.2f" % (div.x/div.y)

assert語句的使用
assert語句用于檢測某個條件表達式是不是為真。assert語句又稱為斷言語句,即assert認為檢測的表達式永久為真,if語句中的條件判斷都可使用assert語句檢測。





附:python標準異常
BaseExceptiona:所有異常的基類
SystemExitb python:解釋器要求退出
KeyboardInterruptc:用戶中斷履行(通常是輸入^C)
Exceptiond:常規(guī)毛病的基類
StopIteratione:迭代器沒有更多的值
GeneratorExita:生成器(generator)產(chǎn)生異常來通知退出
SystemExith:Python 解釋器要求退出
StandardErrorg:所有的內(nèi)建標準異常的基類
ArithmeticErrord:所有數(shù)值計算毛病的基類
FloatingPointErrord:浮點計算毛病
OverflowError:數(shù)值運算超越最大限制
ZeroDivisionError:除(或取模)零 (所有數(shù)據(jù)類型)
AssertionErrord:斷言語句失敗
AttributeError:對象沒有這個屬性
EOFError:沒有內(nèi)建輸入,到達EOF 標記
EnvironmentErrord:操作系統(tǒng)毛病的基類
IOError:輸入/輸出操作失敗
OSErrord:操作系統(tǒng)毛病
WindowsErrorh Windows:系統(tǒng)調(diào)用失敗
ImportError:導(dǎo)入模塊/對象失敗
KeyboardInterruptf:用戶中斷履行(通常是輸入^C)
LookupErrord:無效數(shù)據(jù)查詢的基類
IndexError:序列中沒有無此索引(index)
KeyError:映照中沒有這個鍵
MemoryError:內(nèi)存溢出毛病(對Python 解釋器不是致命的)
NameError:未聲明/初始化對象 (沒有屬性)
UnboundLocalErrorh:訪問未初始化的本地變量
ReferenceErrore:弱援用(Weak reference)試圖訪問已垃圾回收了的對象
RuntimeError:1般的運行時毛病
NotImplementedErrord:還沒有實現(xiàn)的方法
SyntaxError:Python 語法毛病
IndentationErrorg:縮進毛病
TabErrorg:Tab 和空格混用
SystemError 1般的解釋器系統(tǒng)毛病
TypeError:對類型無效的操作
ValueError:傳入無效的參數(shù)
UnicodeErrorh:Unicode 相干的毛病
UnicodeDecodeErrori:Unicode 解碼時的毛病
UnicodeEncodeErrori:Unicode 編碼時毛病
UnicodeTranslateErrorf:Unicode 轉(zhuǎn)換時毛病
Warningj:正告的基類
DeprecationWarningj:關(guān)于被棄用的特點的正告
FutureWarningi:關(guān)于構(gòu)造將來語義會有改變的正告
OverflowWarningk:舊的關(guān)于自動提升為長整型(long)的正告
PendingDeprecationWarningi:關(guān)于特性將會被廢棄的正告
RuntimeWarningj:可疑的運行時行動(runtime behavior)的正告
SyntaxWarningj:可疑的語法的正告
UserWarningj:用戶代碼生成的正告



Python的Exception層次結(jié)構(gòu)

Exception | +-- SystemExit +-- StopIteration +-- StandardError | | | +-- KeyboardInterrupt | +-- ImportError | +-- EnvironmentError | | | | | +-- IOError | | +-- OSError | | | | | +-- WindowsError | | +-- VMSError | | | +-- EOFError | +-- RuntimeError | | | | | +-- NotImplementedError | | | +-- NameError | | | | | +-- UnboundLocalError | | | +-- AttributeError | +-- SyntaxError | | | | | +-- IndentationError | | | | | +-- TabError | | | +-- TypeError | +-- AssertionError | +-- LookupError | | | | | +-- IndexError | | +-- KeyError | | | +-- ArithmeticError | | | | | +-- OverflowError | | +-- ZeroDivisionError | | +-- FloatingPointError | | | +-- ValueError | | | | | +-- UnicodeError | | | | | +-- UnicodeEncodeError | | +-- UnicodeDecodeError | | +-- UnicodeTranslateError | | | +-- ReferenceError | +-- SystemError | +-- MemoryError | +---Warning | +-- UserWarning +-- DeprecationWarning +-- PendingDeprecationWarning +-- SyntaxWarning +-- OverflowWarning +-- RuntimeWarning +-- FutureWarning


參考文獻:
http://blog.chinaunix.net/uid⑵1505614-id⑶618285.html
http://www.phperz.com/article/14/1009/14507.html
http://blog.chinaunix.net/uid⑵2920230-id⑶074716.html

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久久蜜桃 | 日韩欧美一区二区三区免费观看 | 一区二区日韩欧美 | 日韩欧美综合在线 | 一区二区视频 | 国产一区二区免费看 | 九九精品在线 | 一级电影在线播放 | 国产小视频在线 | 国产综合一区二区 | 国产精品一区二区不卡 | 久久99国产精品久久99大师 | 久久久精品国产 | 久久国产精品久久久久久久久久 | 色欧美日韩 | 欧美日韩在线一区二区三区 | 国产另类在线视频 | 黑人巨大精品欧美一区免费视频 | 91欧美一区二区三区综合在线 | 日韩精品一区在线观看 | 这里只有精品视频在线观看 | 成人福利网站 | 成人a毛片 | 久久精品亚洲国产 | 不用播放器的av网站 | 麻豆一区二区三区 | 国产精品视频yy9099 | 国产在线9| 久久久青草婷婷精品综合日韩 | 最新免费av网站 | 欧洲中文字幕 | 国产视频一区二区在线 | 成人精品三级av在线看 | 久久久精品免费视频 | 伊人久久爱 | 日韩日日日 | 九九在线免费视频 | 成人av观看 | 肉色欧美久久久久久久免费看 | yiren22综合网成人 | 一本色道久久综合亚洲二区三区 |