python Exception raise

異常是指程序中的例外,違例狀況。異常機制是指程序出現錯誤後,程序的處理方法。當出現錯誤後,程序的執行流程發生改變,程序的控制權轉移到異常處理。
Exception類是經常使用的異常類,該類包括StandardError,StopIteration, GeneratorExit, Warning等異常類。
StandardError類是python中的錯誤異常,若是程序上出現邏輯錯誤, 將引起該異常。StandardError類是全部內斂異常的基類,放置在默認的命名空間中,所以使用IOEroor,
EOFError, ImportError等類,不須要導入exception模塊。
StopIteration類判斷循環是否執行到尾部,若是循環到尾部,則拋出該異常。
GeneratorExit類是由Generator函數引起的異常,當調用close()時引起該異常。
Warning類表示程序中的代碼引發的警告。
python中的異常使用繼承結構建立,能夠在異常處理程序中捕獲基類異常,也能夠捕獲各類子類異常,python中使用try...except語句捕獲異常,異常子句定義在try子句後面。

try...except的使用方法

try...except用於處理問題語句,捕獲可能出現的異常。try子句中的代碼塊放置可能出現異常的語句,except子句中的代碼塊處理異常。
演示try...except語句捕獲IOError異常
try:
     file("hello.txt", "r")                  #若是文件不存在,引起異常
     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子句中的代碼引起異常,程序將直接跳轉到外層try對應的except子句,而內部的try子句將不會被執行。

try...finally的使用方法
try...except後還能夠添加一個finally子句。不管異常是否發生,finally子句都會被執行。全部的finally子句一般用於關閉因異常而不能釋放的系統資源。
try:
     f = open("hello.txt", "r")
     try:
          print f.read(5)
     except:
          print "讀文件異常"
     finally:
          print "釋放資源"
          f.close()
except IOError:
     print "文件不存在"

  



使用raise拋出異常
當程序出現錯誤,python會自動引起異常,也能夠經過raise顯示地引起異常。一旦執行了raise語句,raise後面的語句將不能執行。
演示raise用法
try:
     s = None
     if s is None:
         print "s 是空對象"
         raise NameError     #若是引起NameError異常,後面的代碼將不能執行
     print len(s)
except TypeError:
     print "空對象沒有長度"

  



自定義異常
python容許程序員自定義異常,用於描述python中沒有涉及的異常狀況,自定義異常必須繼承Exception類,自定義異常按照命名規範以"Error"結尾,顯示地告訴程序員這是異常。自定義異常使用raise語句引起,並且只能經過人工方式觸發。
from __future__ import division

class DivisionException(Exception):
      def __init__(self, x, y):
            Exception.__init__ (self, x, y)       #調用基類的__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語句檢測。
相關文章
相關標籤/搜索