錯誤在執行前修改,邏輯錯誤無法修改
執行時,異常產生,檢查到錯誤且直譯器認為是異常,丟擲異常
異常處理,截獲異常,忽略或者終止程式處理異常
try:
try_suite
except exception [e]:
exception_block
try:
aexcept nameerror,e:
print
"catch error:",e
except: #捕獲所有的異常
print
舉個栗子:
猜數字遊戲
import random
num=random.randint(0,100)
while
true:
guess=int(raw_input('enter 1~100:'))
if guess>num:
print
"guess bigger:",guess
elif guessprint
else:
print
"ok"
break
print
"\n"
當我輸入50d的時候就會丟擲異常,終止了程式,我想讓程式有丟擲異常,又不終止程式(增加程式的健壯性)
import random
num=random.randint(0,100)
while
true:
try:
guess=int(raw_input('enter 1~100:'))
except valueerror,e:
print
"enter 1~100:"
if guess>num:
print
"guess bigger:",guess
elif guessprint
else:
print
"ok"
break
print
"\n"
python
try:
try_suite
except exception1 [e]:
block1
except exception2 [e]:
block2
except exceptionn [e]:
blockn
try:
try_suite
except exception1 [e]:
block1
else:
none_exception
當沒有捕獲到異常的時候會繼續執行else中的**
try:
try_suite
finally:
do_finally
try:
f=open('a.txt')
print int(f.read())
finally:
print
"file close"
f.close()
多應用有開啟某檔案或者資源在關閉的時候,使用該語句
try:
try_suite
except exception1 [e]:
block1
else:
none_exception
finally:
do_finally
with context[as var]:
with_suite
舉個栗子
with open('a.txt') as f:
for line in f.readlines():
print line
在有異常的時候,還能保證關閉檔案
with語句實質時上下文管理:
寫乙個可以執行with 上下文管理器的類
class
mycontex
(object)
def__init__
(self,name):
self.name=name
def__enter__
(self):
print
"__enter__"
return self
defdo_self
(self):
print
"do_self"
def__exit__
(self,exc_type,exc_value,traceback):
print
"__exit__"
print
"error:",exc_type,"info:","exc_value"
if __name__=='__main__'
with mycontex('test context') as f:
print f.name
f.do_self()
output:
__enter__
test context
do_self
__exit__
error:none info:none
raise語句用於主動丟擲異常
syntax:raise[exception[,args]]
raise typeerror, 「test typeerror」
output:
typeerror: test typeerror
用於檢查表示式是否為真,如果為假,就會引發乙個assertionerror錯誤
syntax: assert expression [,args]
`assert 0, 『test assert』
syntax:class fileerror(ioerror)
pass
產生自定義異常:assert fileerror,」file error」
class
customerror
(exception):
def__init__
(self,info):
exception.__init__(self)
self.errorinfo = info
print id(self) #看這個物件的id
def__str__
(self):
return
"custionerror:%s"% self.errorinfo
try:
raise customerror("test customerror")
except customerror,e:
print
"errorinfo:%d,%s"%(id(e),e)
output:
errorinfo:139918882121840,custionerror:test customerror
慕課網學習notes
python 錯誤與異常
開發人員在編寫程式的時候難免會遇到錯誤,那遇到錯誤要如何找到錯誤並處理異常呢?本篇主要實現異常的處理方法。一 錯誤分類 1.語法錯誤 syntaxerror 2.執行時錯誤 這種包括很多異常的型別,eg nameerror zerodivisionerror等 二 異常處理的基本語法 try 執行 ...
Python 錯誤與異常處理
python 有兩種錯誤型別 1 語法錯誤 syntax errors 2 異常 exceptions 語法錯誤就不說了 關於異常處理 用try except 首先try 和 except 之間的 首先被執行,如果沒有異常,則except語句將會被忽略,如果出現異常,則try下的語句將會被忽略,直接...
python異常與錯誤學習
1 異常簡介 看如下示例 print test begin f open 123.txt r 用唯讀模式開啟乙個不存在的檔案,會報錯 開啟乙個不存在的檔案123.txt,當找不到123.txt 檔案時,就會丟擲給我們乙個ioerror型別的錯 誤,no such le or directory 12...