1. 程式人生 > >[轉載](Python)異常處理try...except、raise

[轉載](Python)異常處理try...except、raise

一、try...except

有時候我們寫程式的時候,會出現一些錯誤或異常,導致程式終止。例如,做除法時,除數為0,會引起一個ZeroDivisionError

例子:

1

2

3

4

a=10

b=0

c=a/b

print "done"

執行結果:

Traceback (most recent call last):
File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in <module>
c=a/b
ZeroDivisionError: integer division or modulo by zero

我們發現程式因為ZeroDivisionError而中斷了,語句print "done" 沒有執行。為了處理異常,我們使用try...except,更改程式碼:

1

2

3

4

5

6

7

8

a=10

b=0

try:

c=a/b

print c

except ZeroDivisionError,e:

print e.message

print "done"

執行結果:

integer division or modulo by zero
done

這樣程式就不會因為異常而中斷,從而print "done"語句正常執行。

我們把可能發生錯誤的語句放在try模組裡,用except來處理異常。except可以處理一個專門的異常,也可以處理一組圓括號中的異常,如果except後沒有指定異常,則預設處理所有的異常。每一個try,都必須至少有一個except

處理一組異常可以這樣寫(其中e代表異常的例項):

1

2

3

4

try

pass

except (IOError ,ZeroDivisionError),e:

print e

try ....except...else 語句,當沒有異常發生時,else中的語句將會被執行。

例子:

1

2

3

4

5

6

7

8

9

10

a=10

b=0

try:

c = b/ a

print c

except (IOError ,ZeroDivisionError),x:

print x

else:

print "no error"

print "done"

執行結果:

0
no error
done

二、raise 引發一個異常

例子:如果輸入的資料不是整數,則引發一個ValueError

1

2

3

4

5

inputValue=input("please input a int data :")

if type(inputValue)!=type(1):

raise ValueError

else:

print inputValue

假設輸入1.2,執行結果為:

please input a int data :1.2
Traceback (most recent call last):
File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 3, in <module>
raise ValueError
ValueError

如果輸入1,執行結果為:

please input a int data :1
1

三、try ...finally 

無論異常是否發生,在程式結束前,finally中的語句都會被執行。

1

2

3

4

5

6

a=10

b=0

try:

print a/b

finally:

print "always excute"

執行結果:

Traceback (most recent call last):
always excute
File "C:/Users/lirong/PycharmProjects/untitled/openfile.py", line 4, in <module>
print a/b
ZeroDivisionError: integer division or modulo by zero

雖然有異常發生,但在程式終止前,finally中的語句也能正常執行。。

finally語句也可以和except語句一起使用。

1

2

3

4

5

6

7

8

a=10

b=0

try:

print a/b

except:

print "error"

finally:

print "always excute"

執行結果:

error

always excute

四、自定義一個異常類

自定義一個MyException類,繼承Exception。

1

2

3

4

class MyException(Exception):

def __init__(self,message):

Exception.__init__(self)

self.message=message   

如果輸入的數字小於10,就引發一個MyException異常:

1

2

3

4

5

6

a=input("please input a num:")

if a<10:

try:

raise MyException("my excepition is raised ")

except MyException,e:

print e.message

執行結果:

please input a num:1
my excepition is raised

五、python所有的標準異常類:

異常名稱 描述
BaseException 所有異常的基類
SystemExit 直譯器請求退出
KeyboardInterrupt 使用者中斷執行(通常是輸入^C)
Exception 常規錯誤的基類
StopIteration 迭代器沒有更多的值
GeneratorExit 生成器(generator)發生異常來通知退出
SystemExit Python 直譯器請求退出
StandardError 所有的內建標準異常的基類
ArithmeticError 所有數值計算錯誤的基類
FloatingPointError 浮點計算錯誤
OverflowError 數值運算超出最大限制
ZeroDivisionError 除(或取模)零 (所有資料型別)
AssertionError 斷言語句失敗
AttributeError 物件沒有這個屬性
EOFError 沒有內建輸入,到達EOF 標記
EnvironmentError 作業系統錯誤的基類
IOError 輸入/輸出操作失敗
OSError 作業系統錯誤
WindowsError 系統呼叫失敗
ImportError 匯入模組/物件失敗
KeyboardInterrupt 使用者中斷執行(通常是輸入^C)
LookupError 無效資料查詢的基類
IndexError 序列中沒有沒有此索引(index)
KeyError 對映中沒有這個鍵
MemoryError 記憶體溢位錯誤(對於Python 直譯器不是致命的)
NameError 未宣告/初始化物件 (沒有屬性)
UnboundLocalError 訪問未初始化的本地變數
ReferenceError 弱引用(Weak reference)試圖訪問已經垃圾回收了的物件
RuntimeError 一般的執行時錯誤
NotImplementedError 尚未實現的方法
SyntaxError Python 語法錯誤
IndentationError 縮排錯誤
TabError Tab 和空格混用
SystemError 一般的直譯器系統錯誤
TypeError 對型別無效的操作
ValueError 傳入無效的引數
UnicodeError Unicode 相關的錯誤
UnicodeDecodeError Unicode 解碼時的錯誤
UnicodeEncodeError Unicode 編碼時錯誤
UnicodeTranslateError Unicode 轉換時錯誤
Warning 警告的基類
DeprecationWarning 關於被棄用的特徵的警告
FutureWarning 關於構造將來語義會有改變的警告
OverflowWarning 舊的關於自動提升為長整型(long)的警告
PendingDeprecationWarning 關於特性將會被廢棄的警告
RuntimeWarning 可疑的執行時行為(runtime behavior)的警告
SyntaxWarning 可疑的語法的警告
UserWarning 使用者程式碼生成的警告

相關推薦

[轉載]Python異常處理try...exceptraise

一、try...except 有時候我們寫程式的時候,會出現一些錯誤或異常,導致程式終止。例如,做除法時,除數為0,會引起一個ZeroDivisionError 例子: 1 2 3 4 a=10

Python異常處理try...exceptraise

一、try...except有時候我們寫程式的時候,會出現一些錯誤或異常,導致程式終止。例如,做除法時,除數為0,會引起一個ZeroDivisionError例子:1234a=10b=0c=a/bprint "done"執行結果:Traceback (most recent

Python異常處理try...exceptraise

一、try...except有時候我們寫程式的時候,會出現一些錯誤或異常,導致程式終止。例如,做除法時,除數為0,會引起一個ZeroDivisionError例子:1234a=10b=0c=a/bprint "done"執行結果:Traceback (most recent

python異常處理--try except else raise finally

-- 用戶 exceptio .... 異常處理 auth AS range 分享圖片 寫程序時遇到異常情況,程序可能無法正常運行。此時就需要引入異常處理 1.try ...except try 後面寫正常運行的程序代碼,except即為異常情況 1 a=3 2 b=

Python異常處理try...except...finally raise assert

異常處理: try ...except  try程式碼塊放置容易發生異常的語句:except程式碼塊放置處理異常的語句 try ...except...finally finally程式碼快是任何時候

Java基礎異常處理關鍵字:try catch finally throw throws

cut main 5.1 模型 指針 str control 情況 實例   嗨咯,大家晚上好,我的博客首篇開始了 ,我們一起加油吧! 都說java 語言是非常健壯性 如:垃圾回收機制、內存模型、異常處理,強類型轉換、跨平臺,等等,使得Java語言的受到青睞。今天我們先來聊

python學習筆記-day8-2-【python 異常處理 try except

finall 沒有 class cond col pytho span try 學習 python的異常處理,與其它語言的異常一樣,當錯誤發生的時候,能捕獲到發生的錯誤,不會導致程序crash。 一、try except 1、 try except Exception,

Python入門 異常處理

必須 IV PE runt .... fin 是否 位置 邏輯 異常處理 捕捉異常可以使用try/except語句。 try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常信息並處理。 以下是語法: 1 try: 2 <語句>

Python異常處理try...except的簡單使用

1. try…except 有時候我們寫程式的時候,會出現一些錯誤或異常,導致程式終止。使用try…except,這樣程式就不會因為異常而中斷。把可能發生錯誤的語句放在try模組裡,用except來處理異常。except可以處理一個專門的異常,也可以處理一組圓括號中的異常,如果exc

Python異常處理try except

原文地址:https://www.cnblogs.com/init-life/p/9105546.html 異常處理try except 在Python中,異常處理,主要是try except語句,通常語法格式如下. try:     程式碼塊1 except Exce

異常2----異常處理try...cache...finallythrows

二、try...catch異常處理 當執行程式時,可能丟擲異常。可以對可能出現異常的程式捕獲異常並處理。【例1】 當呼叫帶有throws的方法(指可能丟擲非RuntimeExce

零基礎入門學習Python33--異常處理:你不可能總是對的2

前言 接下來我們介紹一種方法捕捉語句塊中可能出現的錯誤 知識點 異常處理 捕捉異常可以使用try/except語句。 try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常資訊並處理。 如果你不想在異常發生時結束你的程式,只需在try

Python筆記3異常處理

Exception(異常) 當遇到異常的條件時,Python使用exception物件來描述。當遭遇一個錯誤的時候,程式就丟擲一個異常,如果沒有來處理此類異常的策略的話,程式將會以一個traceback的方式終止,程式碼如下: >>> 1/0  Tra

筆記異常處理try/catch的應用例子finally待整理

題目:判斷傳入的字串是否為ip地址 /** * 判斷傳入的字串是否為ip地址 * @param ip * @return * @throws Exception */ public static boolean isIP(String ip)

Python爬蟲包 BeautifulSoup 學習 異常處理

面對網路不穩定,頁面更新等問題,很可能出現程式異常的問題,所以我們要對程式進行一些異常處理。大家可能覺得處理異常是一個比較麻煩的活,但在面對複雜網頁和任務的時候,無疑成為一個很好的程式碼習慣。 網頁‘404’、‘500’等問題 try:

SpringMVC系列十三異常處理

supported per ring servlet 標記 ext test 頁面 ansi 一、簡介 ? Spring MVC 通過 HandlerExceptionResolver 處理程序的異常,包括 Handler 映射、數據綁定以及目標方法執行時發生的異常。? S

異常處理 try except

point 導致 輸入 映射 訪問 oar tro 初始化 解釋器 異常處理 try except 一、try...except 有時候我們寫程序的時候,會出現一些錯誤或異常,導致程序終止。例如,做除法時,除數為0,會引起一個ZeroDivisionError 例

c++基礎十三——異常處理

err fun runt splay cat c++基礎 自動 所有 參數 異常處理的思想與程序實現 異常處理的基本思想 異常處理的語法 異常接口聲明 一個函數顯式聲明可能拋出的異常,有利於函數的調用者為異常處理做好準備 可以在函數的聲明中列出這個函數可能拋擲的所有異

011 python語法_錯誤處理 try except finally raise

    ''' 時間:2018/11/03 目錄:   一: 正常執行 1 正常 2 else   二: 發生錯誤 1 異常 2 異常 三: BaseException 四: 多層錯誤 - 多層

JAVA進階01異常處理

一、概述(Exception) 二、異常分類 1、繼承結構        說明: ClassNotFoundException 不屬於執行時異常  2、error (1)Error與Exception的區別