日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

《转》Python学习(16)-python异常

發(fā)布時間:2025/3/15 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《转》Python学习(16)-python异常 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自 http://www.cnblogs.com/BeginMan/p/3171445.html

一、什么是錯誤,什么是異常,它們兩者區(qū)別

這里解釋如下:個人覺得很通俗易懂

錯誤是指在執(zhí)行代碼過程中發(fā)生的事件,它中斷或干擾代碼的正常流程并創(chuàng)建異常對象。當(dāng)錯誤中斷流程時,該程序?qū)L試尋找異常處理程序(一段告訴程序如何對錯誤做出響應(yīng)的代碼),以幫助程序恢復(fù)流程。換句話說,錯誤是一個事件,而異常是該事件創(chuàng)建的對象。

當(dāng)使用短語“產(chǎn)生異常”時,表示存在問題的方法發(fā)生錯誤,并創(chuàng)建異常對象(包含該錯誤的信息及發(fā)生的時間和位置)來響應(yīng)該錯誤。導(dǎo)致出現(xiàn)錯誤和隨后異常的因素包括用戶錯誤、資源失敗和編程邏輯失敗。這些錯誤與代碼實現(xiàn)特定任務(wù)的方法有關(guān),而與該任務(wù)的目的無關(guān)。

如果不進(jìn)行異常處理,即不對錯誤做出響應(yīng),程序的健壯性就會大打折扣,甚至無法保證正常運行,所以必須要進(jìn)行異常處理。
原文:http://blog.163.com/zhaojinyong2@126/blog/static/279729562008719384580/

Python的異常處理能力是很強大的,可向用戶準(zhǔn)確反饋出錯信息。在Python中,異常也是對象,可對它進(jìn)行操作。所有異常都是基類 Exception的成員。所有異常都從基類Exception繼承,而且都在exceptions模塊中定義。Python自動將所有異常名稱放在內(nèi)建 命名空間中,所以程序不必導(dǎo)入exceptions模塊即可使用異常。一旦引發(fā)而且沒有捕捉SystemExit異常,程序執(zhí)行就會終止。如果交互式會話 遇到一個未被捕捉的SystemExit異常,會話就會終止。
Python采用的是”嘗試(try)塊“、和”捕獲(catch)塊“。

二、Python中的異常

1、NameError:嘗試訪問一個未聲明的變量

>>>foo Traceback (most recent call last):File "<pyshell#0>", line 1, in <module> foo NameError: name 'foo' is not defined

如果請求的名字沒有在任何名稱空間里找到,則產(chǎn)生一個NameError異常。

2、ZeroDivisionError:除數(shù)為0

>>> 1/0Traceback (most recent call last):File "<pyshell#2>", line 1, in <module>1/0 ZeroDivisionError: integer division or modulo by zero

3、SyntaxError:Python解釋器語法錯誤

>>> for SyntaxError: invalid syntax >>>

SyntaxError異常是唯一一個不是在程序執(zhí)行時發(fā)生的異常,代表一個不正常的結(jié)構(gòu),一般在編譯時發(fā)生。

注意:Python是解釋型非編譯型,這里說的編譯是字節(jié)編譯。

4、IndexError:超出索引(?out of range)

>>> lis = [] >>> lis[0]Traceback (most recent call last):File "<pyshell#5>", line 1, in <module> lis[0] IndexError: list index out of range

5、KeyError:請求一個不存在的字典關(guān)鍵字

>>> dic = {'name':'BeginMan'} >>> dic['name'] 'BeginMan' >>> dic['age'] Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> dic['age'] KeyError: 'age' >>>

6、IOError:輸入輸出錯誤

>>> f = open('s.txt','r') Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> f = open('s.txt','r') IOError: [Errno 2] No such file or directory: 's.txt'

7、AttributeError:嘗試訪問未知的屬性

>>> class myClass(object):pass>>> myIn = myClass() >>> myIn.barTraceback (most recent call last):File "<pyshell#17>", line 1, in <module> myIn.bar AttributeError: 'myClass' object has no attribute 'bar' >>>

?8、ValueError:傳給函數(shù)的參數(shù)類型不正確,比如給int()函數(shù)傳入字符串形

?三、異常處理

try-except/try-finally只選其一,可以一個try多個except;但只能一個try,一個finally
try-except-finally組合

try:s = 1/0 #except Exception,e: except ZeroDivisionError, e: print 'Error:%s' %e finally: print 'ok'

斷言assert:

try:assert 1 == 2,'1 is not equal 2' except Exception,e: print '%s:%s' %(e.__class__.__name__,e) #輸出:AssertionError:1 is not equal 2

?注意:
如果上面的with代碼塊沒有使用from __future__ import with_statement, 代碼將會報錯, 提示你這個功能在2.6中實現(xiàn).
Warning: 'with' will become a reserved keyword in Python 2.6

?

轉(zhuǎn)載于:https://www.cnblogs.com/nolonely/p/6641528.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的《转》Python学习(16)-python异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。