国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中的異常處理學(xué)習(xí)筆記

2020-02-23 06:21:58
字體:
供稿:網(wǎng)友

Python 是面向?qū)ο蟮恼Z言,所以程序拋出的異常也是類。

常見的異常類

1.NameError:嘗試訪問一個沒有申明的變量
2.ZeroDivisionError:除數(shù)為 0
3.SyntaxError:語法錯誤
4.IndexError:索引超出序列范圍
5.KeyError:請求一個不存在的字典關(guān)鍵字
6.IOError:輸入輸出錯誤(比如你要讀的文件不存在)
7.AttributeError:嘗試訪問未知的對象屬性
8.TypeError:傳給函數(shù)的參數(shù)類型不正確,比如給 int 函數(shù)傳入字符型

自定義異常類

盡管內(nèi)建的異常類已經(jīng)包括大部分情況,但如果需要創(chuàng)建自己的異常類,可以采用下面的方法:
代碼如下:
class CustomException(Exception): # Exception 為所有異常的基類
    # 處理異常的代碼

捕獲異常

代碼如下:
try: 
   # 需要進行捕獲異常的代碼,只有出現(xiàn)異常之前的代碼被最終執(zhí)行
except (Exception1,Exception2,...) as argument: 
   # 捕獲到 (Exception1,Exception2,...) 里的異常才執(zhí)行本段代碼
   # argument 是一個異常類的實例,包含異常的具體信息
except:
   # 捕獲到 (Exception1,Exception2,...) 以外的異常執(zhí)行本段代碼,用 sys 模塊的 exc_info() 函數(shù)可以獲取異常信息
else: 
   # 如果沒有捕獲到異常則執(zhí)行本段代碼
finally: 
   # 無論是否捕獲到異常都執(zhí)行本段代碼

上述語句并不都是必須的,譬如 try...except...、try...finally... 或者 try...except...else... 語句都是可行的。我們還可以 用 try...except...else... 代替 if...else...。

拋出異常

如果我們想要在自己編寫的程序中主動拋出異常,可以采用如下兩種方法:

raise Exception(reason)

Exception 必須是一個異常類的名稱。可選項 reason 用來傳遞異常的信息。

assert expression[,reason]

assert 是斷言的關(guān)鍵字。當表達式 expression 為真則什么都不做,否則拋出 AssertionError 異常。reason 提供異常的信息。

上下文管理器

由于對象 File 支持上下文管理協(xié)議,因此可以采用下面的方法打開文件:
代碼如下:
with open('filename') as fp:
   # 無論本段代碼是否出現(xiàn)異常,文件對象 fp 均能正確關(guān)閉

Example
代碼如下:
import sys

def div(num, den):
 print('_________________   (',num,',',den,')/n')
 try:
  ans = num/den
  assert den != num, 'Equal' # 斷言:分子分母不相等
  den = 'Changed'            # 如果執(zhí)行本語句之前未出現(xiàn)異常,改變 den 的值
  if num % 2:                # 如果分子為奇數(shù),則拋出異常

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青阳县| 双峰县| 萝北县| 比如县| 高邑县| 建阳市| 海伦市| 和田市| 宜宾市| 龙口市| 丹寨县| 新和县| 徐汇区| 寻乌县| 东阿县| 宣威市| 项城市| 留坝县| 日喀则市| 行唐县| 普洱| 九寨沟县| 余庆县| 建始县| 屯门区| 无棣县| 白朗县| 上犹县| 怀集县| 大化| 内丘县| 福州市| 通化县| 武宁县| 阳城县| 日喀则市| 沁源县| 韶关市| 化隆| 克东县| 玉环县|